GoAsm

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

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

Содержание

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

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

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

Пример программы Hello Word, которая выводит на экран сообщение «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

Ссылки


Источник — «http://www.sbup.com/wiki/GoAsm»
Личные инструменты

Served in 0.158 secs.