汇编代码,传递指针给函数

本文探讨了在Visual Studio和GCC环境下,如何通过汇编代码传递指针给函数。在Visual Studio中,`eax`表示`result`值,`p`表示`&p`的值,`[p]`和`[[p]]`分别表示`p`的值和`*p`的值。而GCC中,`rdi`等价于`p`,`[rdi]`表示`*p`。文章补充说明了传递数据给函数时的类似情况。
摘要由CSDN通过智能技术生成

一. 如果传递指针给函数

long cread(long *p){
    long result = *p;
    return result;
}

visual studio得到的汇编代码:

    long result = *p;
 mov         eax,dword ptr [p]  
 mov         ecx,dword ptr [eax]  
 mov         dword ptr [result],ecx  
    return result;
 mov         eax,dword ptr [result]  

那么
eax, 代表了result的值
p, 代表了&p的值, 相当于:ebp+立即数。
[p], 代表了p的值。
[[p]], 代表了*p的值(注:[[p]]这样写是为了帮助理解)

而如果用gcc生成的汇编代码:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值