GoAsm
GoAsm — ассемблер для процессоров семейства x86, созданный Джереми Гордоном (англ. Jeremy Gordon) для написания программ для операционных систем семейства Windows, способен создавать 32- и 64-битных версии, а также программы с поддержкой Уникода. GoAsm является проприетарным ПО и распространяется в двоичном формате.
Цель разработки[править]
GoAsm создавался с целью создать компилятор с простым и ясным синтаксисом, производящий как можно меньший код, со скромными потребностями для обработки скриптов и возможностью добавления расширений.
Пример программы[править]
Пример программы Hello World, которая выводит на экран сообщение «Hello World (from GoAsm)» и завершается.
<source lang="asm">
DATA SECTION
KEEP DD 0 ;переменная
CODE SECTION
START: PUSH -11 CALL GetStdHandle PUSH 0,ADDR KEEP PUSH 24,'Hello World (from GoAsm)' PUSH EAX CALL WriteFile XOR EAX,EAX RET </source>
Особенности[править]
- GoAsm не создаёт 16-разрядный код и способен работать только в «плоском» режиме (без сегментов), благодаря этому синтаксис очень прост.
- В качестве формата выходных данных используется COFF Portable Executable format, и для создания исполняемых файлов необходимо использовать дополнительный компоновщик (например — GoLink или ALINK) и компилятор ресурсов (GoRC).
- GoAsm способен обрабатывать файлы в формате Уникод (UTF-16 или UTF-8).
Синтаксис[править]
Несмотря на то что используется Intel-синтаксис, синтаксис GoAsm не совместим ни с одним из существующих компиляторов.
GoAsm использует препроцессор сходный по синтаксису с препроцессором языка программирования Си.
В GoAsm необходимо использовать квадратные скобки для чтения и записи памяти.
Для того чтобы получить смещение необходимо записать: <source lang="asm"> MOV EBX,ADDR wParam MOV EBX,OFFSET wParam </source> А для того чтобы получить доступ к памяти: <source lang="asm"> MOV EBX,[wParam] </source>
Поддерживаемые наборы инструкций[править]
GoAsm поддерживает все стандартные инструкции (за исключением использующихся только в 16-разрядных программах). Инструкции x87 для работы с числами с плавающей точкой. Инструкции и синтаксис для работы с MMX, SSE, SSE2, 3DNow!, FPU, MMX, XMM.
Другие инструменты, разработанные Джереми Гордоном[править]
- GoLink — компоновщик
- GoRC — компилятор ресурсов
- GoBug — отладчик (версия для Windows XP является платной)
- Paws — IDE
Ссылки[править]
↑ [+] | |
---|---|
IDE |
RadASM • WinAsm • ASMedit • Easy Code • Fresh • GSS Visual Assembler • TASM Visual • SASM |
Трансляторы |
MASM • GAS • fasm • GoAsm • NASM • RosASM • TASM • Yasm • HLASM |
Форматы синтаксиса |