CEmu (IDE) - Le Bottin des Jeux Linux

CEmu (IDE)

🗃️ Specifications

📰 Title: CEmu (IDE) 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Development 👁️ Visual: 2D
🏷️ Category: Development ➤ Programming language 🏝️ Perspective: First person (interface)
🔖 Tags: Development; IDE; Assembly; Easy To Use; Editor; E-learning; Multi-platform ⏱️ Pacing: Real Time
🐣️ Approx. start: 2016-05-08 👫️ Played: Single
🐓️ Latest: 2022-06-17 🚦 Status: 05. Tested & Working (status)
📍️ Version: Latest: 0.6 / Dev: 2bc64f6 ❤️ Like it: 1. 🙏️⭐⭐⭐⭐⭐ (fantastic)
🏛️ License type: 🕊️ Libre 🎀️ Quality: 1. 🏆️⭐⭐⭐⭐⭐ (perfect)
🏛️ License: MIT ✨️ (temporary):
🐛️ Created: 2022-08-25 🐜️ Updated: 2024-10-10

📦️ Deliverables

📦️ Package name: ..... 📦️ Arch:
📄️ Source: ✓ ..... 📦️ RPM:
⚙️ Generic binary: ..... 📦️ Deb:
🌍️ Browser version: ..... 📦️ AppImage:
📱️ PDA support: ..... 📦️ Flatpak:
✨️ Not use: ..... 📦️ Snap:

🚦 Entry status

📰 What's new?: 👻️ Temporary:
💡 Lights on: 🎨️ Significant improvement:
👔️ Already shown: 💭️ New version published (to be updated):
🎖️ This work: 5 stars 🚧️ Some work remains to be done:
👫️ Contrib.: goupildb & Louis 🦺️ Work in progress:
🎰️ ID: 16232

📖️ Summary

📜️[en]: CEmu (for Cheap EMUlator) is a libre, multi-platform IDE for assembly language (x86, ARM, MIPS, SPARC architectures), allowing you to write assembly code, validate and test it (in a virtualized environment) or even learn to write it. It includes an editor for writing code, as well as an environment for compiling assembly into machine language and running it in a QEMU-based emulator. 📜️[fr]: CEmu (pour Cheap EMUlator) est un IDE libre et multi-plateforme pour le langage assembleur (des architectures x86, ARM, MIPS, SPARC), permettant d'écrire du code assembleur, de le valider et le tester (en environnement virtualisé) ou même d'apprendre à l'écrire. Il intègre un éditeur pour l'écriture du code, ainsi qu'un environnement de compilation de l'assembleur en langage machine et son exécution dans un émulateur basé sur QEMU.

🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t(202xxx) gd(202xxx) gu(202xxx) r(202xxx) lp(202xxx) ht(202xxx) g(202xxx) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]

💰 Commercial
[Support their work (Donate)]

🍩️ Resources
(empty, license): [Homepage] [Dev site] 🎬️ g(202xxx)

🛠️ Technical informations
[PCGamingWiki] [MobyGames]

🦣️ Social
(CEmu) Devs (CEmu (for Cheap EMUlator) Team [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(CEmu) Devs (crazy hugsy (crazy rabbidz, Blah Cats) [fr] [en]): [Site 1 2 3] [Support their work (Donate)] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(Keystone Engine (assembler)) Devs (Keystone Engine Team 1 2 3 [fr] [en]): [Site 1 2] [Support their work (Donate)] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(Capstone Engine (disassembler)) Devs (Capstone Engine Team 1 2 [fr] [en]): [Site 1 2] [Support their work (Donate)] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(Unicorn (CPU emulator framework)) Devs (Unicorn Team 1 2 3 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(QEMU) Devs (QEMU Team 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(201512) 2]
(QEMU) Devs (Fabrice Bellard [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]

🐝️ Related


📦️ Misc. repositories
[Repology] [pkgs.org] [Generic binary] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage(author's repo)] [Snap] [PortableLinuxGames]

🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]

🕊️ Source of this Entry: [Site (date)]

🦣️ Social Networking Update (on mastodon)

🛠️ Title: CEmu (IDE)
🦊️ What's: A libre IDE for assembly language (x86, ARM, MIPS, SPARC)
🏡️ -
🐣️ https://github.com/hugsy/cemu
🔖 #LinuxGameDev #Programming
📦️ #Libre
📖 Our entry: (homeless)

🥁️ Update: 0.6
⚗️ Loads of new features ⭐️
📌️ Changes: https://github.com/hugsy/cemu/releases
🦣️ From: -

🕶️

📚️ CEmu (for Cheap EMUlator) is a libre, multi-platform IDE for assembly language (x86, ARM, MIPS, SPARC architectures), allowing you to write assembly code, validate and test it (in a virtualized environment) or even learn to write it. It includes an editor for writing code, as well as an environment for compiling assembly into machine language and running it in a QEMU-based emulator.

📕 Description [en]

📜️ "A libre IDE for assembly language (x86, ARM, MIPS, SPARC)" 📜️

Description

Writing assembly is fun. Assembly is the lowest language (humanly understandable) available to communicate with computers, and is crucial to understand the internal mechanisms of any machine. Unfortunately, setting up an environment to write, compile and run assembly for various architectures (x86, ARM, MIPS, SPARC) has always been painful. CEmu is an attempt to fix this by providing a bundled GUI application that empowers users to write assembly and test it by compiling it to bytecode and executing it in an QEMU-based emulator.

CEmu combines all the advantages of a basic assembly IDE, compilation and execution environment, by relying on the great libraries Keystone, Unicorn and Capstone libraries in a Qt6 powered GUI.

It allows to test binary samples, check your shellcodes or even simply learn how to write assembly code, all of this for the following architectures:

✅️ x86-32 / x86-64
✅️ ARM / AArch64
✅️ MIPS / MIPS64
✅️ SPARC / SPARC64
✅️ PPC (but not emulation)

CEmu was mostly tested to work on Linux and Windows, but should work on MacOS.

📕 Description [fr]

Un IDE libre pour le langage assembleur (x86, ARM, MIPS, SPARC), par la CEmu (for Cheap EMUlator) Team, initié par crazy hugsy (crazy rabbidz, Blah Cats).
En Python & Qt. Il utilise les bibliothèques Keystone, Unicorn et Capstone.

CEmu (pour Cheap EMUlator) est un IDE libre et multi-plateforme pour le langage assembleur (des architectures x86, ARM, MIPS, SPARC), permettant d'écrire du code assembleur, de le valider et le tester (en environnement virtualisé) ou même d'apprendre à l'écrire. Il intègre un éditeur pour l'écriture du code, ainsi qu'un environnement de compilation de l'assembleur en langage machine et son exécution dans un émulateur basé sur QEMU.

Cheap EMUlator (EMUlator bon marché): terrain d'assemblage multi-architecture léger

Description

Écrire de l'assembleur est amusant. L'assembleur est le langage le plus bas (humainement compréhensible) disponible pour communiquer avec les ordinateurs, et il est crucial pour comprendre les mécanismes internes de toute machine. Malheureusement, la mise en place d'un environnement pour écrire, compiler et exécuter de l'assembleur pour diverses architectures (x86, ARM, MIPS, SPARC) a toujours été pénible. CEmu est une tentative de résoudre ce problème en fournissant une interface graphique groupée qui permet aux utilisateurs d'écrire de l'assembleur et de le tester en le compilant en bytecode et en l'exécutant dans un émulateur basé sur QEMU.

CEmu combine tous les avantages d'un IDE d'assemblage de base, d'un environnement de compilation et d'exécution, en s'appuyant sur les grandes bibliothèques Keystone, Unicorn et Capstone dans une interface graphique propulsée par Qt6.

Il permet de tester des échantillons binaires, de vérifier vos shellcodes ou même simplement d'apprendre à écrire du code assembleur, le tout pour les architectures suivantes :

✅️ x86-32 / x86-64
✅️ ARM / AArch64
✅️ MIPS / MIPS64
✅️ SPARC / SPARC64
✅️ PPC (mais pas l'émulation)

CEmu a été principalement testé pour fonctionner sous Linux et Windows, mais devrait fonctionner sous MacOS.

🚧️ Installation ➜ 🚀️ Launching [fr]

⚙️ Installation à partir du binaire

⛓️ Installation à partir du binaire classique :
• Pas de binaire classique disponible.


📄️ Installation à partir du source

• Si vous souhaitez quelque-chose de très récent (versions de développement) et/ou qu'il n'y a pas de binaire disponible pour votre distribution/architecture (32/64-bits), la compilation du source est une bonne idée, voir un passage obligé.

▸ Téléchargement du source (sur GitHub) :
☝️ Nota : Évitez le téléchargement du source via les liens https, car ils ne fournissent pas les dépendances
Version stable, dans le répertoire souhaité, lancez : $ git clone -b "Nom_de_la_release" --recursive https://github.com/hugsy/cemu
Nom_de_la_release : à remplacer par le nom d'une release valide indiquée sur la page de développement : sur GitHub, dans la section Release, le nom valide est l'étiquette située à gauche du titre, ou cliquez sur "Tags" pour obtenir la liste des étiquettes valides).
ou Version récente (non stable), dans le répertoire souhaité, lancez : $ git clone --recursive https://github.com/hugsy/cemu

▸ Compilation :
$ cd cemu
$ pip3 install --upgrade .
(n'oubliez pas le ".")

↪ vous obtenez (notamment) le(s) binaire(s): ~/.local/bin/cemu
(donc dans votre HOME)


🚀️ LANCEMENT DE L'INTERFACE:

• En console, lancez (ou cliquez sur ce binaire si vous l'aviez rendu exécutable d'un clic droit sur le fichier): $ ~/.local/bin/cemu

🕵️ Test [fr]

📜️ Préambule :
⚬ 1ere édition : le 24 août 2022 sous Manjaro. Par : goupildb. ⏱️ Durée du test : 20 minutes. 🎯️ Objectif : Initialisation de l'entrée, tests et premières impressions.


⚪️ Tel David Vincent, je cherchais le source de Cemu - l'émulateur Wii, sur GitHub, et je suis tombé sur ce projet.
⚪️ Aaaaah, si j'avais eut un tel outil lorsque j'écrivais en assembleur Z80 sur mon ZX81, puis en 8086 sur mon 1er PC (XT)...

▸ (✔ v. 0.6) Source : FONCTIONNEL.
🟢️ Pas de binaire, mais un source en Python qui se compile et s'installe en une commande, génial.


🌻️ Premières impressions :

⚪️ J'ai fait appel à ma mémoire un peu défaillante (euphémisme :) des années 80 pour aligner 3 lignes de code en assembleur 8086 (j'initialise le registre BX à la valeur 20d/14h, je le copie dans le registre AX, et je le pousse dans la pile - en prévision d'une récupération hypothétique plus tard, dans CX par exemple - je n'y ai pas pensé sur le coup, j'aurais pu faire un pop cx) :
mov bx, 20
mov ax, bx
push bx

🟢️ L'écriture en assembleur est traduite en direct en hexadécimal.
🟢️ 3 boutons permettent d'exécuter l'ensemble du code (Run all code), de l'exécuter pas à pas (Step to Next), et de vérifier la syntaxe du code (check assembly : génial).
Dans le menu, le menu "Architecture" je sélectionne l'architecture souhaitée : x86➜Intel 8086 16 bit.

Dans la zone de gauche, je peux (à priori) initialiser les registres directement aux valeurs souhaitées. Mais visiblement au lancement il les ré-initialise à zéro (?).

Au début j'ai cru que ça ne fonctionnait pas car bien que QEMU soit installé, il m'affichait "VM not running".
🟢️ Mais en fait si, il fonctionne bien, au pas à pas je vois le registre BX prendre la valeur 0x14(=20 en décimal), puis le registre AX prendre la même valeur.
🟢️ A noter qu'à chaque fois que l'on clique sur le bouton "Step to Next" on voit qu'il effectue le cycle pas à pas, puis qu'il réinitialise les registres à zéro et recommence.

🟢️ Donc tout fonctionne nickel.
⚪️ On peut aussi ajouter des sections d'affichage mémoire (bouton "Add Section" / "Remove Section") en lecture (R), écriture (W) et exécution (X), mais je n'y suis pas parvenu. Je ne me risquerai pas à dire que ça ne fonctionne pas, car j'ai sélectionné une zone en début de mémoire et j'imagine qu'il doit y avoir un mécanisme de protection du noyau - que je ne maîtrise absolument pas.
🟢️ On peut aussi interagir avec l'émulateur via une console en Python, mais là aussi je n'y connaît rien.


🧭️ Conclusion :

🕵️ Impression globale : 👍️
❤️ Like it: 🙏️⭐⭐⭐⭐⭐ (fantastic)
🎀️ Quality: 🏆️⭐⭐⭐⭐⭐ (perfect)

🟢️ Mon impression est que c'est un superbe outil pour ceux qui souhaitent se frotter à l'assembleur (c'est pas compliqué pour les commandes de base et c'est hyper-rapide et d'une taille ridiculement faible - de nombreuses routines / interruptions peuvent être utilisées pour des tâches plus complexes ; là où ça se complique c'est de trouver où implanter le code, de le faire communiquer avec un langage plus évolué et de réaliser certaines opérations tel que des opérations arithmétiques autres que x2 ou /2 ;).
👏️ ❤️ Un grand bravo et merci à ses auteurs !