CodeX Assembler ((C) 2002 Marco Kaufmann) ist ein Freeware Assembler für x86 - Plattformen und unterstützt in der derzeitigen Version 1.0 mit Version 2.34 der Opcode Map die Befehlssätze aller Intel - Prozessoren (einschließlich der numerischen Coprozessoren) bis hin zum Pentium IV sowie den AMD 3D Now! Befehlssatz. Der Assembler verfügt über einen integrierten Linker und erzeugt folgende Ausgabeformate:
16 - und 32 Bit Flat Model Binaries
16 - und 32 Bit Anwendungen für DOS
Künftige Versionen von CodeX Assembler werden als Ausgabeformat außerdem 32 Bit Windowsanwendungen (Konsole / GUI) sowie 32 Bit Windows DLLs und 16 - / 32 Bit CodeX Units unterstützen.
Warum CodeX Assembler?
CodeX Assembler bietet einige Vorteile gegenüber anderen x86 - Assemblern:
Prozessorbefehlssätze werden nicht vom CodeX Assembler selbst, sondern von einer externen Opcode Map implementiert. Diese kann als Textdatei jederzeit beliebig erweitert werden um Unterstützung für neue Befehlssätze zu integrieren ohne dabei den Assembler zu modifizieren (d.h., sogar der Anwender selbst kann bei Bedarf den Befehlsumfang erweitern), da CodeX Assembler über die Fähigkeit verfügt, Opcode Maps zu compilieren
Konstantenausdrücke können an jeder Stelle im Quelltext durch Operatoren und Klammern und unter Einbeziehung von Konstantenbezeichnern komplex verknüpft werden, selbst Operanden für Prozessorbefehle (z.B. mov ax,(3*(col_red+7) &| 0F700h)). Es stehen dabei zahlreiche Konstantenoperatoren wie .log, .mod, .pow usw. zur Verfügung
CodeX Assembler unterscheidet zwischen ganzzahligen und gebrochenzahligen Konstantenausdrücken (die in einem anderen Format binär dargestellt werden), so dass auch Variablen für FPU - Register initialisiert werden können. Ordinale Konstantenausdrücke werden dabei stets auf 128 Bit, gebrochenzahlige auf 80 Bit genau berechnet
CodeX Assembler unterstützt die Definition eigener Datentypen (Records, Arrays sowie beliebige Kombinierung beider) und deren Anwendung auf Variablen, wobei alle Felder eines Datentyps bzw. einer Variable direkt referenziert werden können
, um nur ein paar zu nennen. Weitere Details siehe CodeX Assembler Dokumentation.