作者art1 (人,原来不是人)
看板C_and_CPP
标题[问题] 函数或变数的外部程式引用(可见/不可见)
时间Sun Dec 4 16:15:24 2016
搞不懂组合语言中.global 假指令的实际意义,换句话说,也就是不知道 c 语言中「可
被其它程式使用的函数或变数」跟「不可被其它程式使用的函数或变数」,在编译成目的
码时到底是哪边不一样
或是说:对其它程式来说,某程式的函数或变数是「可见」/「不可见」之差异的详细内
容到底是什麽?
是因为产生的符号表中没提供 local 函数或变数的对应地址吗? 那是不是代表使用如下
的指令
arm-elf-objcopy -O binary helloworld helloworld.bin
来产生纯粹的可执行机器码中的任何函数或变数都不能被其它程式使用?因为已经失去对
应表可供查询?
另一个问题是,用组合语言写程式时,需要用.global假指令来让连结器看到自行指定之程
式入口的函式名称,但用 c 语言写时就不用,是因为 gcc 编译器自动帮我们处理好了?
但组译器不会自动帮我们处理?
--
「看在上帝的份上,我们不能当着孩子的面枪杀他的父亲!」
「那我们就连孩子一起干掉!」
「第一枪打中的是那个天真的孩子,第二枪是抱着孩子的母亲。第三枪
停顿了三秒,当难以致信的父亲擦拭着脸上爱子的脑浆从震惊中醒转
过来,慢慢的转头看向停车的地方,分辨出是谁在攻击他後,第三颗
子弹才将他的脑壳打飞。」 ─摘自〈狼群〉
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.64.0.230
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1480839329.A.1EF.html
1F:推 LPH66: C 语言的部份你可以去找 extern 和 static 这两个关键字 12/04 17:18
2F:→ LPH66: (不是 C++ 的 static 喔, 那个另外还有 C++ 特有的意义) 12/04 17:20
※ 编辑: art1 (61.64.0.230), 12/04/2016 17:43:07