Jak skompilować program 64-bitowy
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.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
Kompilacja
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:
\MASM64\BIN\ml64 /c MessageBox.asm
\MASM64\BIN\link /subsystem:windows /entry:Main MessageBox.obj
pause
Zakończenie
To wszystko. Dziękuję.