簡體   English   中英

任何人都知道為什么LDR r0,[r1,r2]! 工作不正常? (用拇指2)

[英]anybody knows why LDR r0,[r1, r2]! not working properly? (in thumb-2)

例如, LDR r0,[r1, #4]! r1值將更改為r1+4然后將值加載到r0 ,但是,當我嘗試使用LDR r0,[r1, r2]! r1沒變。

我正在使用TM4C123GH6PGE和CCS 5.4

根據體系結構參考手冊,當使用寄存器作為偏移時,不支持回寫。

當您嘗試組裝不可編碼的東西時,請使用一個更好的匯編程序,它不會以靜默方式扭曲您的代碼 或者,如果它確實打印了警告消息,請不要忽略警告!

.syntax unified
.thumb
LDR r0,[r1, #4]!
LDR r0,[r1, r2]!
LDR r0,[r1, r2]

arm-none-eabi-as -mthumb -mcpu=cortex-m4 arm.S :GAS說arm.S:4: Error: Thumb does not support register indexing with writeback -- 'ldr r0,[r1,r2]!' 而不是將它組裝成ldr r0,[r1, r2]或其他東西。

Cortex-M4支持整個Thumb2指令集 ,而gas知道這一點。我認為沒有辦法直接啟用Thumb2,任何選項的名稱都包含thumb2 ,只有-mthumb.thumb-mcpu=CPU支持Thumb2的-mcpu=CPU-march 。)


它在ARM模式下組裝良好,其中LDR r0,[r1, r2]! 是可編碼的:

   0:   e5b10004        ldr     r0, [r1, #4]!
   4:   e7b10002        ldr     r0, [r1, r2]!
   8:   e7910002        ldr     r0, [r1, r2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM