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

Форматы синтаксиса

AT&T-синтаксис Intel-синтаксис