通过反汇编代码解读指针和引用的内在机理
3页1、通过反汇编代码解读指针和引用的内在机理通过反汇编代码解读指针和引用的内在机理机理, 指针, 汇编, 代码, 解读试图用中文、英文等自然语言将 C+ 的指针和引用的异同描述得简练、通透是一件困难的事情,而阅读包含指针和引用的反汇编代码是一个好办法:这绝对是一种无二义性和尽可能简练的陈述。 比如下述代码 void main(void) int x1=0,*ptrx1=&x1; int x2=0,&refx2=x2; (*ptrx1)+; /关注对变量的操作 refx2+; printf(x1=%d,x2=%dn,x1,x2); 执行后,通过指针及引用对变量的间接操作使 x1 和 x2 都增加了 1 ,不过究竟是如何实现的?我们一起分析反汇编代码: (*ptrx1)+; mov edx,dword ptr ebp-8 ;先读取 x1 的指针到 edx mov eax,dword ptr edx ;然后读取 x1 的值到 eax add eax,1 ;在 eax 中将 x1 的值增 1 mov ecx,dword ptr ebp-8 ;再次读取 x1 的指针到 ecx mov dword pt
2、r ecx,eax ;将增 1 后的变量值送回 refx2+; mov edx,dword ptr ebp-10h mov eax,dword ptr edx add eax,1 mov ecx,dword ptr ebp-10h mov dword ptr ecx,eax 很显然,通过引用将被引用的变量增 1 和通过指针将其指向的变量增 1 的机器代码完全一致,这说明引用形式上以操作变量的简单形式、暗地里采用了和指针一样的方式:通过地址定位和操作变量。 除了通过地址定位和操作变量外,引用不提供对地址的操作,缺乏指针访问变量的灵活性。引用的优势是简练,比较适合函数的参数传递,比如: void chg(int* x,int& y) /前一个参数是指针、后一个是引用 x+; y+; int main(void) int mx=0,my=0; chg(&mx,my); 分析反汇编代码: chg(&mx,my); /指针和引用都通过地址传递参数 lea eax,ebp-8 push eax lea ecx,ebp-4 push ecx call ILT+0(chg) (00401005) x+; / x+ 修改地址 mov eax,dword ptr ebp+8 add eax,4 mov dword ptr ebp+8,eax y+; / y+ 通过地址修改变量 mov ecx,dword ptr ebp+0Ch mov edx,dword ptr ecx add edx,1 mov eax,dword ptr ebp+0Ch mov dword ptr eax,edx 显然: 指针和引用都通过地址定位和操作变量,这是共同点; 引用以操作普通变量的形式操作变量:简略;不具备操作变量地址的功能:不及指针灵活和强大这是指针和引用的不同点。 通过上述分析,不知道是否可以这样认为:引用以简略的方式取代了某些条件下指针的作用;引用涵盖了指针的部分功能;指针可以取代引用,而引用不能取代指针。 上述“分析”过程其实应该叫做“解读”,因为反汇编代码已经对指针和引用的功能给出了绝对无二义性的、尽可能简练和人性化的描述,对知晓汇编语言的人而言应该是毫无障碍的这就是我顺便想说的:汇编语言是研究高级语言的万能钥匙。 收藏 分享 评分
《通过反汇编代码解读指针和引用的内在机理》由会员小**分享,可在线阅读,更多相关《通过反汇编代码解读指针和引用的内在机理》请在金锄头文库上搜索。
2020年高考真题——理科综合(全国卷Ⅲ)+Word版含答案
2021年绝味鸭脖策划书
2021年熟食店创业方案
2021年熟食店开店策划
2021年卤菜店创业计划书
2021年周黑鸭网络营销策划方案
东大21年1月考试《现代设计方法》考核作业
谈我国行政管理效率的现状及其改观对策(论文)
单证员考试-备考辅导-复习资料:无贸易背景信用证案分析.docx
土木工程毕业生答辩自述.docx
建筑学毕业后工作状态真实写照.doc
C#代码规范(湖南大学).doc
xx区食药监局2019年工作总结及2020年工作计划
2019年中医院药物维持治疗门诊工人先锋号先进事迹
2019年度xx乡镇林长制工作总结
2019年性艾科工作计划书
2019年人才服务局全国扶贫日活动开展情况总结
关于组工信息选题的几点思考
摘了穷帽子 有了新模样
2019年某集团公司基层党支部书记培训班心得体会
2024-04-08 33页
2024-04-08 10页
2024-04-08 25页
2024-04-08 12页
2024-04-08 10页
2024-04-08 21页
2024-04-08 40页
2024-04-08 34页
2024-04-08 28页
2024-04-08 28页