Convenção C - Assembly

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

    ".