汇编和C代码之间的互相调用

在汇编和C代码之间的互相调用的时候,现阶段会有使用对方的函数和变量两种类型的引用,下面对其进行试验并总结。

  1.  汇编调用C的函数,首先c语言的函数必须是全局的也就是不能声明为static的。然后在汇编中使用extern关键字将其在代码中声明,最后调用过程中,汇编代码负责将参数压栈,call c_func,汇编代码负责清理堆栈。
  2. C调用汇编的函数,汇编的函数名其实就是一个label,C调用它的时候其实就是asm_func(param1, param2);主要的压栈,出栈操作在C代码中做的,但其实是编译器进行编译的时候做的这个工作。
  3. 汇编使用C的变量
    • c中的变量是指针。比如 char* hello="Hello world!\n";,当在汇编中使用hello的时候,因为汇编中的hello是一个地址C中的hello是一个指向字符串的指针,是一个变量里面存储的是字符串的首地址,在汇编中[hello]才是指向字符串的地址。
    • c中的变量是数组。比如char hello[]="Hello world!\n";,当在汇编中使用hello的时候, 因为汇编中的hello是一个地址,C中的hello也是一个地址不是变量,所以在汇编中引用hello的时候,直接使用hello就是指向字符串的地址。
  4. C使用汇编的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值