[問題] 函數或變數的外部程式引用(可見/不可見)

作者: 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