2025-11-20 06:45:15
OPRD r0就是往r0里塞数字的指令。比如写OPRD r0 5就等于把5存进r0。这个指令后面跟的数字不管是什么都会直接变成r0的值。比如OPRD r0 100就等于r0=100。它跟MOV指令不一样,MOV得先找数再移动,OPRD直接给数就存进去。指令结构是OPRD加寄存器加号加数值。
为什么这么解释呢?因为OPRD是操作寄存器立即数指令。根据《ARM汇编手册》第3章数据存储指令,OPRD的机器码是0x8F开头。寄存器占4位,r0对应0000。立即数占8位,所以能存-128到127的数。比如OPRD r0 5的机器码是0x8F00 0005。可能把号听成逗号,所以写成OPRD r0 ,5就成错指令了。数据手册明确说立即数必须带号,否则会报错。指令执行时直接修改寄存器值,不需要内存访问,所以比LDR快。
本题链接: