我正在使用 cc65 用 6502 匯編語言撰寫一些代碼。
因為我生活在 2022 年而不是 1979 年,并且可以使用比目標平臺強大一百萬倍的開發機器,所以我正在用 C 為匯編語言代碼撰寫單元測驗。
顯然 C 和匯編語言的呼叫約定是不同的,所以我有一堆包裝函式,它們接受 C 風格的引數,然后呼叫匯編語言函式。
但是在呼叫一個匯編語言函式之后,我想檢查用匯編語言定義的各種全域變數的狀態,但我不能,因為 C 期望所有識別符號都以下劃線開頭'_',而我的匯編語言模塊中的識別符號不.
我可以將每個符號匯出兩次,一次帶'_'前綴,一次不帶前綴,但它看起來很笨重,我只是想知道是否有更簡單的方法?有沒有#pragma可以用來告訴 C 完全按原樣使用符號名稱而不添加下劃線的東西?
我查看了 cc65 檔案,一無所獲,但這似乎是一個很常見的需求,我想知道其他人在做什么。
uj5u.com熱心網友回復:
很可能 cc65 編譯器僅支持訪問具有 ABI 特定裝飾的符號,即以下劃線開頭的符號_。
因此,要訪問其他符號,它們必須重命名以跟隨裝飾,或者必須創建裝飾別名。
_foo EQU foo
對于函式,撰寫包裝函式也是值得考慮的。這可能會提高除錯代碼的能力,因為當兩個符號參考相同的地址時,除錯器往往會感到困惑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/437346.html
