社区
C++ 语言
帖子详情
编译器是如何翻译函数,函数调用的? 从汇编语言角度去解释 ?
wtjd
2009-08-25 05:12:51
编译器是如何翻译函数,函数调用的? 从汇编语言角度去解释 ?
...全文
202
8
打赏
收藏
编译器是如何翻译函数,函数调用的? 从汇编语言角度去解释 ?
编译器是如何翻译函数,函数调用的? 从汇编语言角度去解释 ?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wtjd
2009-08-31
打赏
举报
回复
大家都说得很对,
函数是放在代码段中,各线程只是用了函数的处理流程而已,各线程每一次的函数调用都有自己的函数栈,
因此函数内的局部变量,形参是不会有同步问题的,对于全局变量则存在同步问题。
因此大家写代码的时候,要注意线程与全局变量可能会存在的同步问题。
“函数 就是一段功能二进制代码和函数入口地址
调用 就是把参数写到对应函数的栈空间 保存现场 跳转到函数入口地址 ”
这句话说得很对,说出了函数的本质。
希望大家都能理解函数是什么,为什么几乎大多数计算机语言都有函数的概念,
我想函数无法对一段可复用逻辑的封装吧,这样一个大程序分配一段一段的小逻辑,
这样也是乎合人的大脑思考问题,分解问题的习惯的。
好了,就说这么多,把分给大家了。
wtjd
2009-08-31
打赏
举报
回复
push,pop
wtjd
2009-08-31
打赏
举报
回复
谢谢各位的回答,
结帖 给分,
鼠
2009-08-25
打赏
举报
回复
楼主多自己看一些编译结果和调用规范,就好理解了。
whg01
2009-08-25
打赏
举报
回复
所有的函数明在link阶段都会转换为相对的逻辑地址,运行时系统会载入exe文件,然后把函数放到相应地址的代码段。调用就是先把参数入栈,然后跳转到函数的地址。具体调用方式有2种。
珍惜生命远离CPP
2009-08-25
打赏
举报
回复
[Quote=引用 2 楼 wtjd 的回复:]
那如果有两个线程要调用同一个函数,是不是会有同步的问题?
[/Quote]
没有啊,代码是只读的,多少个线程访问都没问题
wtjd
2009-08-25
打赏
举报
回复
那如果有两个线程要调用同一个函数,是不是会有同步的问题?
珍惜生命远离CPP
2009-08-25
打赏
举报
回复
push 参数
call 函数地址
《计算机体系结构》软件篇2 之
编译器
1 课程知识结构 2 世界上第一个
编译器
怎么来的 3 第一个汇编编辑器怎么来的 4 高级语言与高级语言
编译器
1 5 高级语言 与高级语言
编译器
2 6 高级语言与人类语言的关系 1 7 计算机语言与人类语言对比 2 8 举例理解...
汇编:
函数
调用
1. 从代码的顺序执行说起 每一个程序员脑子里应该都有这么一种印象:...在
解释
这个之前,也许我们需要科普一点有关于汇编的知识。 2.
函数
调用
中的一些细节说明 2.1
函数
调用
中的关键寄存器 2.1.1 程序计数器PC...
C语言与
汇编语言
之间的
函数
调用
C程序调用汇编
函数
实例 汇编程序调用C
函数
实例 CC语言和
汇编语言
的混合程序设计 内联汇编 嵌入式汇编 内联汇编与嵌入式汇编的差异ARM 程序设计C与汇编之间的
函数
调用
ATPCS简介 ARM-Thumb 过程调用
ARM汇编调用
函数
调用
函数
需要
函数
调用
时,最好使用C语言编写调用代码,让
编译器
帮我们生成汇编代码,因为这其中涉及到abi或eabi。但是有时确实需要自己手动以汇编代码形式调用
函数
,如启动代码中。这时,需要参考响应的eabi编程规范...
汇编-
函数
调用
的理解
1. 从代码的顺序执行说起 每一个程序员脑子里应该都有这么一种印象:“程序是顺序执行的”。这个观点其实和我们开篇所讲的cpu的流水线执行过程直接相关。 让我们再回忆一下脑海中关于
函数
调用
的概念,也许会是这个...
C++ 语言
64,686
社区成员
250,505
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章