假設我想宣告一個像“u”這樣的變數,它是一個字符。為什么我要使用 .byte 而不是 .ascii?
單個 ascii 字符不會也是 1 個位元組長嗎?
uj5u.com熱心網友回復:
對于單個 ASCII 字符,您可以選擇.ascii "u"或.byte 'u'。兩者都將在當前位置組裝成一個位元組。這是.ascii和.byte的功能幾乎重疊的一個用例。
對于人類讀者,有些人可能會閱讀.asciiaschar foo[1] = {'u'};與thebeing .bytelike char bar = 'u';,但在 asm 中這只是語意上的差異。兩者都是具有相同物件表示的 1 位元組物件,并且與 C 不同,沒有什么會隱式地取消參考一個來獲取那里的值,而名稱是陣列的地址。
.byte允許非 ASCII 值方便.byte 1, 2, 3地實作 C
uint8_t arr[] = {1,2,3};
如果您的匯編程式支持十六進制轉義碼(GAS 或 clang),您可以等效地撰寫.ascii "\x01\x02\x03",但對于人類讀者來說,該.byte版本看起來更像 C。
.byte還允許有符號的負值,-2而無需手動計算 2 的補碼位模式,如.ascii "\xFE".
對于長度超過 1 個位元組的文本字串.ascii "abc",當然比
.byte 'a', 'b', 'c'.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/503874.html
上一篇:檢查本地存盤中是否已存在產品ID
