Предлагаю вашему вниманию моё новое творение - ассемблер на Delphi. В отличие от многих примеров, которые только генерируют ASM файлы для последующей компиляции в TASM, MASM32, FASM и т.п. данная программа сама создаёт EXE файлы.
На данный момент программа создаёт EXE файлы объёмом от 1кб, поддерживает типы данных (byte,dword,string), записи (record) и немного других приятных функций.
Программы выглядят примерно таким образом:
Код:
.import
import Kernel32.dll WriteFile
import Kernel32.dll GetStdHandle
import Kernel32.dll ExitProcess
.var
record two_strings
string s1 "This string have three parts:"
string s2 "s1, s2"
string somename "and s3."
end
byte STD_INPUT_HANDLE 0xf5
dword count 0x00000000
.code
push ^STD_INPUT_HANDLE
call getstdhandle
push 0x00 // lpOverlapped
push @count // lpNumberOfBytesWritten
push ^length(two_strings) // nNumberOfBytesToWrite
push @two_strings // lpBuffer
push eax // hFile
call writefile
push 0x00
call ExitProcess
Скачать компилятор, исходники компилятора и примеры (30кб):
http://www.igrodel.ru/tdg3d/peasm-0.3beta.zip
Компиляция - из коммандной строки (в архиве есть нужные BAT файлы для компиляции примеров).