高级语言如何映射到汇编的映射

本文探讨了高级语言如何转换为汇编代码,以C语言为例,涉及变量、结构和函数的处理。变量分为函数内外,函数外变量存储于全局堆,函数内变量通过栈管理。结构在内存中分配空间,处理数据组织和对齐。函数调用通过栈传递参数。此外,文章简述了线程的概念,强调线程是进程内的并行执行单元,每个线程有自己的栈空间。最后,讨论了C语言的函数重载和C++的类函数、多态实现原理。
摘要由CSDN通过智能技术生成

         语言的设计发展是从低级向高级发展的过程。汇编放一边不说,可以看看C是如何转换为汇编代码,我仅仅是对原理性东西做概要解释,所以有些地方可能不够准确。C语言我可以将程序内容,分为三个部分:变量、结构、函数。

         变量一般分为函数内变量,函数外变量,这两者之间是有区别的,函数外变量,最终将被存放在一个全局堆空间,而函数内变量往往通过栈方式来构建出来,或者说是动态存在于栈空间。对于函数外变量与函数内变量的存在模型的说明,与汇编语言没有任何关系,汇编语言是对具体动作的指示,而将变量通过什么方式存储、消除是语言背后模型设计的问题,这个又有点类似虚拟机模型的讨论了,不跑题,不瞎扯了。

         那结构是什么,本质上什么也不是,如果没有这个结构的变量,那么这个结构真的屁也不是,如果定义了这个结构的变量,那么就有说的了,这个变量会在生成代码的过程中有所特殊处理,特殊在几个地方,一个是会为这个对象分配一个内存块来存储这个结构的变量,另外还有清楚结构内的数据组织,数据对齐方式,这样在处理A.p

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值