Upload
majofewien
View
217
Download
0
Embed Size (px)
Citation preview
7/24/2019 Conveno C - Assembly
1/2
Conveno C funes em Assembly X86
- Os parmetros so armazenados em ordem inversa no Stack.
- A funo chamada, guardando assim o endereo de retorno no Stack.
pushl $2pushl $1
call function
Parmetro !...Parmetro "Parmetro #$ndereo de retorno %&$sp'
- A primeira coisa a fazer na funo sa(var o $p) no stack e copiar o $spno $)p. *sto vai permitir acessar os parmetros com +ndices os atravs do
$)p, / 0ue durante a eecuo da funo o $sp pode ser a(terado.
pushl %ebp #salva o base pointer antigo
movl %esp, %ebp #faz stack pointer apontar para base pointer
Parmetro ! !12 3 2%&$p)'...Parmetro " #"%&$)p'
Parmetro # 4%&$)p'$ndereo de retorno 2%&$)p'&$)p antigo %&$sp'
- A funo pode reservar espaos no Stack para as vari/veis (ocais movendo
o Stack para )aio.
su)( 5%n 1 2',&$sp 6 " vari/veis subl $8, !sp
Parmetro ! !12 3 2%&$p)'...
Parmetro " #"%&$)p'Parmetro # 4%&$)p'$ndereo de retorno 2%&$)p'&$)p antigo %&$sp'7ari/ve( 8oca( # -2%&$)p'7ari/ve( 8oca( " -4%&$)p'
Baseado no %Ebp voc pode acessar todas as suas variveis
relativas a funo.
7/24/2019 Conveno C - Assembly
2/2
9uando terminar a eecuo da funo, deve ser feito :
#. ;o(ocar o va(or de retorno da funo em &ea
".