Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Rysunek1.7.Kod„ex02”skompilowanynaplatformęx86;widoczneróżnekonwencjewywołań(1
cdecl
,2
stdcall
,3
fastcall
)
1.1.3.Konwencjewywołańx86-64
Konwencjewywołańobowiązującena64-bitowejarchitekturzex86-64przedstawiatabela1.2.
Tabela1.2.Spiskonwencjiwywołańnaplatformiex86-64
System
Windows
Linux,BSD,
OSX
Parametrywrejestrach
Parametrynastosie
Ktosprzątastos
Rejestrybezpieczne
RCX,RDX,R8,R9
C-style
caller
RBX,RSI,RDI,RBP,R12-R15
RDI,RSI,RDX,RCX,R8,R9
C-style
caller
RBX,RBP,R12-R15
Wcelachtestowychmożemyponownieskompilowaćprogram„ex02”narozważanąarchitekturę:
>gccex02.c-oex02_64.exe-O0-m64
>file*exe
ex02.exe:PE32executable(console)Intel80386,forMSWindows
ex02_64.exe:PE32+executable(console)x86-64,forMSWindows
Wtymprzypadku,dlawszystkichtrzechwywołańfunkcji(niezależnieodzdefiniowanychdlanichatrybutów)zostałwygenerowanyten
samkod,cowidaćnarysunku1.8.
Rysunek1.8.64-bitowykodprogramu„ex02”,wktórymwywołaniamająsamąformę