我在将ARM汇编指令编码成ARM机器语言时遇到了问题
CMN r9,r10,ROR r11
将ROR r11转换为文字操作数(对齐和8位立即数代码)
发布于 2020-11-01 02:35:54
既然你最终主要靠自己解决了这个问题:
so.s
CMN r9,r10,ROR r11汇编成目标文件中的机器码,然后反汇编
arm-none-eabi-as so.s -o so.o
arm-none-objdump -d so.o
so.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <.text>:
0: e1790b7a cmn r9, r10, ror r11从那开始
CMN r9,r10,ROR r11
.inst 0xe1790b7a
Disassembly of section .text:
00000000 <.text>:
0: e1790b7a cmn r9, r10, ror r11
4: e1790b7a cmn r9, r10, ror r11来自arm文档。
CMN (register-shifted register)
CMN<c> <Rn>, <Rm>, <type> <Rs>
[cond]00010111[rn]0000[rs]0[type]1[rm]
rn is r9 so 1001
rm is r10 so 1010
rs is r11 so 1011
[cond]00010111[1001]0000[1011]0[type]1[1010]
condition is always so 1110
type is ror so 11
[1110]00010111[1001]0000[1011]0[11]1[1010]
1110000101111001000010110111010
1110 0001 0111 1001 0000 1011 0111 1010
0xE1790B7A你可以尽可能快地输入/写下它,你可以对它进行编码。
只有当手工操作和使用工具不匹配时,你才需要找出原因。在极少数情况下,它是文档,看看你是否能从处理器人员那里找到更旧的更新版本,而不是一些第三方的东西。或者,如果不匹配,则可能是您正在查看错误的指令描述,查看反汇编与文档的比较,以找出编码。(或者您在某种程度上使用了错误的工具或错误的工具)。只有当它根本不匹配,并且你不能解决它时,它才会变成堆栈溢出问题,首先是芯片/核心技术支持的支持问题,然后是像这里这样的地方。
https://stackoverflow.com/questions/64617730
复制相似问题