首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ARM汇编指令编码为ARM机器语言

将ARM汇编指令编码为ARM机器语言
EN

Stack Overflow用户
提问于 2020-10-31 09:59:01
回答 1查看 109关注 0票数 1

我在将ARM汇编指令编码成ARM机器语言时遇到了问题

CMN r9,r10,ROR r11

将ROR r11转换为文字操作数(对齐和8位立即数代码)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-01 02:35:54

既然你最终主要靠自己解决了这个问题:

so.s

代码语言:javascript
复制
CMN r9,r10,ROR r11

汇编成目标文件中的机器码,然后反汇编

代码语言:javascript
复制
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

从那开始

代码语言:javascript
复制
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文档。

代码语言:javascript
复制
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

你可以尽可能快地输入/写下它,你可以对它进行编码。

只有当手工操作和使用工具不匹配时,你才需要找出原因。在极少数情况下,它是文档,看看你是否能从处理器人员那里找到更旧的更新版本,而不是一些第三方的东西。或者,如果不匹配,则可能是您正在查看错误的指令描述,查看反汇编与文档的比较,以找出编码。(或者您在某种程度上使用了错误的工具或错误的工具)。只有当它根本不匹配,并且你不能解决它时,它才会变成堆栈溢出问题,首先是芯片/核心技术支持的支持问题,然后是像这里这样的地方。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64617730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档