Light-industry-up.ru

Экосистема промышленности

GoAsm

19-10-2023

GoAsm — ассемблер для процессоров семейства x86, созданный Джереми Гордоном (англ. Jeremy Gordon) для написания программ для операционных систем семейства Windows, способен создавать 32- и 64-битных версий, а также программы с поддержкой Unicode. GoAsm является проприетарным ПО и распространяется в бинарном формате.

Содержание

Цель разработки

GoAsm создавался с целью создать компилятор с простым и ясным синтаксисом, производящий как можно более компактный код, скромными потребностями для обработки скриптов и возможностью добавления расширений.

Пример программы

Пример программы Hello World, которая выводит на экран сообщение «Hello World (from GoAsm)» и завершается.

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

Особенности

  • GoAsm не создаёт 16-разрядный код и способен работать только в «плоском» режиме (без сегментов), благодаря этому синтаксис очень прост.
  • В качестве формата выходных данных используется COFF Portable Executable format, и для создания исполняемых файлов необходимо использовать дополнительный компоновщик (например — GoLink или ALINK) и компилятор ресурсов (GoRC).
  • GoAsm способен файлы в формате Unicode (UTF-16 или UTF-8).

Синтаксис

Несмотря на то что используется Intel-синтаксис, синтаксис GoAsm несовместим ни с одним из существующих компиляторов.

GoAsm использует препроцессор сходный по синтаксису с препроцессором языка программирования C.

В GoAsm необходимо использовать квадратные скобки для чтения и записи памяти.

Для того чтобы получить смещение необходимо записать:

MOV EBX,ADDR wParam
MOV EBX,OFFSET wParam

А для того чтобы получить доступ к памяти:

MOV EBX,[wParam]

Поддерживаемые наборы инструкций

GoAsm поддерживает все стандартные инструкции (за исключением использующихся только в 16-разрядных программах). Инструкции x87 для работы с числами с плавающей точкой. Инструкции и синтаксис для работы с MMX, SSE, SSE2, 3DNow!, 3DNow!, FPU, MMX, XMM, SSE, SSE2 and 3DNow!.

Другие инструменты разработанные Джереми Гордон

  • GoAsm — ассемблер
  • GoLink — компоновщик
  • GoRC — компилятор ресурсов
  • GoBug — отладчик (версия для Windows XP является платной)
  • Paws — IDE

Ссылки

  • Официальный сайт
  • Самоучитель (англ.)


GoAsm.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06