C语言内嵌汇编编程--函数参数传递,返回值

本文介绍了C语言内嵌汇编编程的基础知识,特别是关于函数参数如何通过栈进行传递以及返回值的处理。文中以Intel CPU的IO访问为例,详细阐述了堆栈在函数调用过程中的变化,并提到了使用bp寄存器来保存状态。此外,还讨论了如何在返回值中处理多个值的情况。
摘要由CSDN通过智能技术生成

本文内容较为基础,适合汇编新手(惭愧,本人就是)学习参考。

内嵌编程:函数体用汇编实现,保存在.asm文件中;在.asm和.c文件中声明;在.c文件中调用,调用方式和普通函数相同。

函数参数传递
    刚开始想用偷懒,默认传入参数较少的函数,参数直接传入cx、dx,从通用寄存器可以直接得到参数值。而不用堆栈中捞(在Efi shell上述方法好像可以,下次试试)。实际上述方法不可行,用debug32查看通用寄存器值,发现参数并未传入>_<。

    所以需要用栈传递参数(以访问intel cpu IO 为例):

    堆栈变化情况,未调用函数前:

    函数参数传入堆栈情况:

         参数入栈后,将指令指压入栈保存;要用到bp寄存器,将bp也压入堆栈; 

     执行到代码段,堆栈变化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值