请教这句ARM汇编的意思:andeq r0, r0, r4, ror #20

发布于 2022-09-19 15:16:05 字数 152 浏览 26 评论 0

andeq        r0, r0, r4, ror #20

关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?

请高手解释一下,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

不一样的天空 2022-09-26 15:16:06

原帖由 rocky1972 于 2008-4-13 18:56 发表
andeq        r0, r0, r4, ror #20

关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?

请高手解释一下,谢谢

这个... 还是看看 arm 指令集方面的说明吧,偶不懂 arm,改天看看 arm 再来答你

冷月断魂刀 2022-09-26 15:16:06

伪码(不要当C码看):if(Z==1)r0=r0+{(r4&0xfff00000)>>20|(r4&0x000fffff)<<12}
括号内是所谓的循环右移(ror)
Z是相等标志

゛时过境迁 2022-09-26 15:16:06

原帖由 rocky1972 于 2008-4-13 18:56 发表
andeq        r0, r0, r4, ror #20

关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?

请高手解释一下,谢谢

大致看了一下 arm 文档,结论如下:

eq 是条件码,等于的意思,基于 Z 标志。
ror 是操作码,循环右移的意思, ror #20 意思是:循环右移20位

andeq        r0, r0, r4, ror #20   的意思是:
若为0(Z=1) 则: r4 循环右移20位(但不改变r4值),然后 r0 | r4 。最后 r0 = r0 | r4

也就是:
if (zero) {
    tmp = r4 >> 20; (循环)
   r0 = r0 | tmp;
}

若没理解错,应该是这样吧。

PS:ARM 的指令格式还挺怪的

昇り龍 2022-09-26 15:16:06

多谢milk和cjaizss

小弟只是不懂EQ的意思,现在明白了。谢谢两位  BOW

下雨或天晴 2022-09-26 15:16:06

应该是and 而不是 “|”吧,
这通常在反汇编arm程序经常看到的。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文