在匯編代碼中,這段代碼
.data
myval : .long 0x11111111
將變數myval放在.data節中。所以我想在SDRAM中的特定地址中定義我自己的部分,并在匯編代碼中使用它來撰寫一些用于除錯的資料。我像這樣在聯結器腳本中添加了我的部分(這是 .sdram 的第一部分輸出,所以我知道起始地址)。
.mydebug : {
. = ALIGN(8);
KEEP(*(.__mydebug));
} >.sdram
并在這樣的匯編代碼中使用它。
.global
... skip ...
mov x6, #0x70
ldr x7, =myval
str x6, [x7]
... skip ...
.__mydebug
myval: .long 0x11111111
但編譯抱怨
Error: unknown pseudo-op: `.__mydebug'
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
使用.section指令。
.section .__mydebug
myval: .long 0x11111111
要知道的一件事:自定義部分的名稱不應以句點開頭。這些名稱是為 ABI 定義的部分保留的。因此,也許將該部分稱為mydebug. 盡管違反了 ELF 規范,但對于與正常資料.data.mydebug相似.data但需要與正常資料分離的部分使用類似名稱也是很常見的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/377380.html
