[问题] 函数或变量的外部程式引用(可见/不可见)

楼主: art1 (人,原来不是人)   2016-12-04 16:15:24
搞不懂组合语言中.global 假指令的实际意义,换句话说,也就是不知道 c 语言中“可
被其它程式使用的函数或变量”跟“不可被其它程式使用的函数或变量”,在编译成目的
码时到底是哪边不一样
或是说:对其它程式来说,某程式的函数或变量是“可见”/“不可见”之差异的详细内
容到底是什么?
是因为产生的符号表中没提供 local 函数或变量的对应地址吗? 那是不是代表使用如下
的指令
arm-elf-objcopy -O binary helloworld helloworld.bin
来产生纯粹的可执行机器码中的任何函数或变量都不能被其它程式使用?因为已经失去对
应表可供查询?
另一个问题是,用组合语言写程式时,需要用.global假指令来让连结器看到自行指定之程
式入口的函式名称,但用 c 语言写时就不用,是因为 gcc 编译器自动帮我们处理好了?
但组译器不会自动帮我们处理?
作者: LPH66 (-6.2598534e+18f)   2016-12-04 17:18:00
C 语言的部份你可以去找 extern 和 static 这两个关键字(不是 C++ 的 static 喔, 那个另外还有 C++ 特有的意义)

Links booklink

Contact Us: admin [ a t ] ucptt.com