Показать сообщение отдельно
  #1  
Старый 13.01.2010, 11:01
tmtlib tmtlib вне форума
Прохожий
 
Регистрация: 13.01.2010
Сообщения: 1
Репутация: 10
По умолчанию Создание EXE как это делают компиляторы

Предлагаю вашему вниманию моё новое творение - ассемблер на Delphi. В отличие от многих примеров, которые только генерируют ASM файлы для последующей компиляции в TASM, MASM32, FASM и т.п. данная программа сама создаёт EXE файлы.

На данный момент программа создаёт EXE файлы объёмом от 1кб, поддерживает типы данных (byte,dword,string), записи (record) и немного других приятных функций.

Программы выглядят примерно таким образом:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.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 файлы для компиляции примеров).
Ответить с цитированием