[英]Reversing PowerPC to C
当涉及到按位函数时,我并不是最好的,但是我想弄清楚它是如何工作的。 一旦我弄清楚了它是如何工作的,我可能就可以弄清楚其余的了。
ori r11, r11, 11
那怎么能翻译成C? 我做对了吗?
r11 = (r11 | 11);
我知道这不是正确的C语法,我只想对其有一个基本的了解。
ori
指令是or immediate: ori RA RS UI
哪里:
RA = the resulting register to store the operation result
RS = the source register for which to use in the operation
UI is an unsigned 16-bit integer for the operation
您已经正确解释了它,并且您的C看起来也很有效。
但是请注意,PowerPC是一个大端架构,因此,如果您打算跨非大端平台(例如Intel x86)跨平台比较任何数据,则不会获得正确的结果。 语法不变,“低位”的位置将改变。
ori是“或立即数”,因此您是正确的。 C也可以,尽管最好是:
r11 |= 11;
令人高兴的是,许多PowerPC指令的读取方式与相应的C语句完全相同。 例如add命令
add r3,r4,r5
等价于该陈述
r3 = r4 + r5;
如我所说,这适用于大多数命令。 也有例外。 例如,它不适用于商店。 除此之外,您还需要从规范中查找每个助记符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.