首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在16位Thumb-2汇编指令集中“更新条件标志”S是如何编码的?

在16位Thumb-2汇编指令集中“更新条件标志”S是如何编码的?
EN

Stack Overflow用户
提问于 2012-10-20 03:07:18
回答 2查看 239关注 0票数 1

所以我需要为类编写一个非常基本的反汇编程序,并且我很难弄清楚可以附加到Thumb指令后面的S是如何编码的。

例如,指令0x0011对应于以下汇编代码:

代码语言:javascript
复制
movs    r1, r2

为什么它不能只是一个普通的行动?

同样,0x1889对应于:

代码语言:javascript
复制
adds    r1, r1, r2

据我阅读参考手册所知,这是与没有S的常规add指令相同的编码。是这样吗?更新条件标志的指令是如何发送的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-20 09:33:18

Thumb没有为每条指令使用S条件字段,所以每条指令都是无条件的(显然,条件分支除外)。从32位的ARM减少到16位的Thumb的部分原因是去掉了它。在我看来,您提供的示例一开始就不应该有s (在this manual中没有使用它们)。

Thumb中的条件代码由ALU指令隐式设置(与ARM相同),但要访问它们,您需要使用条件分支。

票数 0
EN

Stack Overflow用户

发布于 2012-10-20 04:21:40

gnu汇编程序非常烦人,而且会弄乱指令集,但那是另一回事了。对于拇指模式,不要把s放在它抱怨的地方,但因为你没有选择,它总是在那里。只需执行add r1,r2 assemble然后反汇编,您将看到add r1,r2,如果您仔细检查并查看机器指令,相对于手册所说的,它还显示将发生更新标志

0x0011是Ls1 immed_5,rm,rn,因此这是ls1 r1,r2,#0不是add。

0x1889确实是一个add r1,r1,r2。S不是thumb指令集中的一个位,这是暗含的意思。

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

https://stackoverflow.com/questions/12980847

复制
相关文章

相似问题

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