Programowanie w języku Assembler » FAQ

Jak skompilować program 64-bitowy

  • 2010-08-04 01:40
  • 0 komentarzy
  • 1448 odsłon
  • Oceń ten tekst jako pierwszy

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ę.