Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Вообще, язык макросов FASM настолько мощный, что на нем можно написать еще один язык, причем не одним способом.
А можно написать макро для определения управляющих структур типа if/while? С вложенностью и генерацией меток?
Есть и "можно сделать" — все же немного разные вещи. Чтобы сделать if, нужно иметь таккую структуру, как стек.
macro .if [arg]
{
common
__IF equ
local ..endif
__ENDIF equ ..endif
local ..else
__ELSE equ ..else
JNCOND __ELSE,arg
}
macro .else
{
jmp __ENDIF
__ELSE:
restore __IF
__IF equ ,
}
И пытался писать на нем Win32-приложение. 20 строчек на один вызов MessageBox…
; example of simplified Windows programming using complex macro features
include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here
.code
start:
invoke MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK
invoke ExitProcess,0
.end start
Пишем Hello World на FASM