Jak skompilować program 64-bitowy
D.F.
Kompilatory Assemblera x64
Jeżeli chcemy napisać w języku Assembler aplikację 64-bitową musimy zaopatrzyć się w kompilator generujący 64-bitowe pliki wykonywalne. Może to być MASM (oczywiście MASM64), FASM, NASM, jWasm czy inny. Ja tutaj posłużę się kompilatorem MASM. Znaleźć można go w zestawie WDDK (Windows Driver Development Kit) dostępnym do ściągnięcia na stronie Microsoftu.Assembler MASM64 (ML64)
Gdy pobierzemy WDDK i rozpakujemy archiwum, kompilator odnajdziemy w katalogu: `WINDDK\3790.1830\bin\win64\x86\amd64\` Gdzie plik: *ml64.exe, to kompilator *link.exe, to konsolidator (linker)Hello 64-bit World!
Poniżej znajduje się kod 64-bitowego programu wyświetlającego okno informacyjne. Nie będę tutaj opisywał tego kodu, gdyż nie jest to celem tego artykułu. Przejdźmy niżej do kompilacji. ```asm INCLUDELIB \Masm64\Lib\kernel32.lib INCLUDELIB \Masm64\Lib\user32.lib EXTRN MessageBoxA : proc EXTRN ExitProcess : proc.data
body db 'Hello 64-bit World!', 0
capt db 'Information', 0
.code
Main proc
sub rsp, 28h ;przesuwamy wskaźnik stosu
xor r9d, r9d ; rodzaj przycisków i ikony (uType) = 0
lea r8, capt ; adres do tytułu dla okna (lpCaption)
lea rdx, body ; adres do tekstu (lpText)
xor rcx, rcx ; uchwyt (hWnd) = NULL
call MessageBoxA
xor ecx, ecx ; kod wyjścia = 0
call ExitProcess
Main endp
end
<h2>Kompilacja</h2>
Program kompilujemy poleceniem:
`\MASM64\BIN\ml64 /c MessageBox.asm`
Natomiast konsolidujemy poleceniem:
`\MASM64\BIN\link /subsystem:windows /entry:Main MessageBox.obj`
Najwygodniej jest utworzyć sobie skrypt BAT (np. `makeit.bat`), o takiej treści:
<kbd>\MASM64\BIN\ml64 /c MessageBox.asm
\MASM64\BIN\link /subsystem:windows /entry:Main MessageBox.obj
pause</kbd>
<h2>Zakończenie</h2>
To wszystko. Dziękuję.