Архитектура x86-64 под скальпелем ассемблерщика

         

дизассемблерный листинг 32-битного приложения "hello, world!"


В качестве заключительно упражнения перепишем наше приложение в стиле MASM, поклонников которого нужно не бить, а уважать (как ни крути, а все-таки патриарх). Никаких радикальных отличий не наблюдается:

; объявляем внешние API-функции, которые мы будем вызывать

extrn MessageBoxA: PROC

extrn ExitProcess: PROC

; секция данных с атрибутами по умолчанию (чтение и запись)

.data

mytit db 'PENUMBRA is awesome!', 0

mymsg db 'Hello World!', 0

; секция кода с атрибутами по умолчанию (чтение и исполнение)

.code

Main:

mov r9d, 0           ; uType = MB_OK

lea r8,  mytit             ; LPCSTR lpCaption

lea rdx, mymsg             ; LPCSTR lpText

mov rcx, 0           ; hWnd = HWND_DESKTOP

call MessageBoxA

mov ecx, eax         ; uExitCode = MessageBox(...)

call ExitProcess

End Main



Содержание раздела