将PowerPC转换为C
说到按位函数,我不是最好的,但我想弄清楚它是如何工作的。一旦我弄明白了这是怎么回事,我就可能弄明白剩下的将PowerPC转换为C,c,reverse-engineering,powerpc,C,Reverse Engineering,Powerpc,说到按位函数,我不是最好的,但我想弄清楚它是如何工作的。一旦我弄明白了这是怎么回事,我就可能弄明白剩下的 ori r11, r11, 11 如何将其翻译成C?我做得对吗 r11 = (r11 | 11); 我知道这不是正确的C语法,我只是想对它有一个基本的了解。ori是“或立即”,所以你是对的。C也可以,不过最好是: r11 |= 11; ori是“或立即”,所以你是正确的。C也可以,不过最好是: r11 |= 11; ori指令是或立即:ori-RA-RS-UI 其中: RA = t
ori r11, r11, 11
如何将其翻译成C?我做得对吗
r11 = (r11 | 11);
我知道这不是正确的C语法,我只是想对它有一个基本的了解。ori是“或立即”,所以你是对的。C也可以,不过最好是:
r11 |= 11;
ori是“或立即”,所以你是正确的。C也可以,不过最好是:
r11 |= 11;
ori
指令是或立即: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是一种big-endian体系结构,因此如果您计划在非big-endian的平台(例如Intel x86)上比较任何数据,您将无法得到正确的结果。
语法不变,“低阶位”的位置将改变。ori指令是
或立即指令: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是一种big-endian体系结构,因此如果您计划在非big-endian的平台(例如Intel x86)上比较任何数据,您将无法得到正确的结果。
语法不会改变,“低阶位”的位置会改变。好的是,许多PowerPC指令的读取方式与相应的C语句完全相同。例如,add命令
add r3,r4,r5
这与声明是等价的
r3 = r4 + r5;
正如我所说,这适用于大多数命令。也有例外。例如,它不适用于商店。除此之外,您还需要查找规范中的每个助记符。好的是,许多PowerPC指令的读取方式与相应的C语句完全相同。例如,add命令
add r3,r4,r5
这与声明是等价的
r3 = r4 + r5;
正如我所说,这适用于大多数命令。也有例外。例如,它不适用于商店。除此之外,您还需要查找规范中的每一个助记符。您是否找到任何可以自动执行此操作的工具?即使c代码没有编译,它的可读性也比汇编程序强得多。你有没有发现任何可以自动编译的东西?即使c代码不编译,它也比汇编程序可读性强得多。