gpt4 book ai didi

assembly - 有人知道为什么 LDR r0,[r1, r2]!工作不正常? (拇指-2)

转载 作者:行者123 更新时间:2023-12-02 17:59:25 26 4
gpt4 key购买 nike

例如,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:错误:Thumb没有支持写回寄存器索引 - 'ldr r0,[r1,r2]!' 而不是将其组装成 ldr r0,[r1, r2] 或其他东西。

( Cortex-M4 supports the entire Thumb2 instruction set ,gas 知道这一点。我认为没有办法直接使用任何名称包含 thumb2 的选项来启用 Thumb2,只能使用 -mthumb.thumb 以及支持 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]

关于assembly - 有人知道为什么 LDR r0,[r1, r2]!工作不正常? (拇指-2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com