请教这句ARM汇编的意思:andeq r0, r0, r4, ror #20
andeq r0, r0, r4, ror #20
关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?
请高手解释一下,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
andeq r0, r0, r4, ror #20
关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?
请高手解释一下,谢谢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
这个... 还是看看 arm 指令集方面的说明吧,偶不懂 arm,改天看看 arm 再来答你
伪码(不要当C码看):if(Z==1)r0=r0+{(r4&0xfff00000)>>20|(r4&0x000fffff)<<12}
括号内是所谓的循环右移(ror)
Z是相等标志
大致看了一下 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 的指令格式还挺怪的
多谢milk和cjaizss
小弟只是不懂EQ的意思,现在明白了。谢谢两位 BOW
应该是and 而不是 “|”吧,
这通常在反汇编arm程序经常看到的。。