变量的实现机制

在声明一个变量时,需要指定它的数据类型和变量名,代码中我们都用文字表示便于人们阅读,但计算机的CPU确无法识别他们。在C++中的目标代码通过地址来区别不同的变量。

1798715-20190911173939457-393730638.png
对于这段代码:将他们编译为可执行文件后,再反汇编,得到汇编语言代码。

源代码中的a++和b++两条语句对应下面的代码:

incl 0x80495f8 //把0x80495f8地址中的整数值加1
incl 0x80495fc //把0x80495fc地址中的整数值加1

注:
反汇编:是指将机器语言代码转换成与之对应的汇编语言代码的过程。
汇编语言代码:汇编语言代码是以指令为单位的,每条指令占一行,每条指令对应于一条CPU可以执行的指令。

每条指令都包括操作符和操作数,操作符表示这一条指令的操作类型, 上面两条指令的操作符都是inc1,用来执行+1的操作。操作数表示这一操作执行的对象,操作数可能是一个或多个,不同的操作符所需的操作数数量和用途个不相同。如:上面两条指令的操作数分别是0x80495f8 好0x80495fc,他们表示执行incl 的 +1 操作的内存地址。

所以,incl 0x80495f8所执行的操作就是将从0x80495f8内存地址开始的4个字节的内容加1。 0x80495f8和0x80495fc就是a和b 两个变量的首地址,二者之差为4,这是因为他们的内存都占了4个字节。如图:
1798715-20190911181554903-1267449299.jpg

转载于:https://www.cnblogs.com/yiweicheng123/p/11507862.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值