X86与X64 汇编学习——调用汇编函数

本文详细介绍了C函数调用过程中必须保留的寄存器及其作用,包括EAX、EBX、ECX等,并提供了一个典型的过程调用模板,有助于理解函数调用的底层实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节说明函数调用相关:

函数调用必须被保留的内容:
  1. EAX          用于保存输出值,可能在返回前被修改
  2. EBX          指出全局偏移表,必须保留
  3. ECX          保证在函数中可用
  4. EDX          保证在函数中可用
  5. ESP           指向心得堆栈地址,必须保留
  6. EBP           堆栈基址指针,必须保留
  7. EDI           局部寄存器,必须保留
  8. ESI            局部寄存器,必须保留
  9. ST             在函数中可用

C函数过程调用基本模板:

.section .text
.type func ,@function
func:
    pushl %ebp
    movl  %esp,%ebp
    subl  $12,%esp
    pushl %edi
    pushl %esi
    pushl %ebx

    <function code>

    popl %ebx
    popl %esi
    popl %edi
    movl %ebp,%esp
    popl %ebp 
    ret 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值