漫画:你们这些奇葩的代码!

   日期:2020-11-13     浏览:104    评论:0    
核心提示:后记:变量是写程序中司空见惯的东西,可是到了机器层面,一切都消失了,只剩下地址,地址,地址。所以CPU和内存非常疑惑,变量到底是什么东西?熟悉C语言的同学可能对漫画中的汇编有点疑惑,因为...

后记:变量是写程序中司空见惯的东西,可是到了机器层面,一切都消失了,只剩下地址,地址,地址。所以CPU和内存非常疑惑,变量到底是什么东西?

熟悉C语言的同学可能对漫画中的汇编有点疑惑,因为C语言代码(x+y)*z没有出现指针,怎么也都变成地址了 ?其实在硬件层面,都是地址,这里展示的是一个C语言函数

int cal(int x, int y,int z){

    return (x+y)*z;

}

对于函数调用来说,转化成汇编以后,会对应一个个的栈帧,当前的栈帧(例如函数cal)开始地址保存在ebp这个寄存器当中, 而函数cal的参数保存在上一个栈帧中(也就是调用者的栈帧当中),所以可以用8(%ebp), 12(%ebp),16(%ebp)来引用,意思是把寄存器ebp中的地址加上8,加上12,加上16,所以,一起都是地址。

对于Java虚拟机来说,虽然它运行的是字节码,但是在执行的时候,字节码也得靠机器指令来实现,最底层都是地址。 

更多精彩技术漫画,尽在码农翻身

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服