MJ *_*LIM 2 assembly arm texas-instruments cortex-m
例如,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]
Run Code Online (Sandbox Code Playgroud)
组装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指令集,和天然气知道这一点.我不认为有一种方法来直接与包括名称的任何选项来启用的Thumb2 thumb2,只能用-mthumb或.thumb和-mcpu=CPU或-march支持的Thumb2.)
它在ARM模式下组装良好,LDR r0,[r1, r2]!可编码:
0: e5b10004 ldr r0, [r1, #4]!
4: e7b10002 ldr r0, [r1, r2]!
8: e7910002 ldr r0, [r1, r2]
Run Code Online (Sandbox Code Playgroud)