1

バッファーを復号化するためにいくつかの基本的なビットシフトを行うレガシーアプリを移植しようとしていますが、このpowerpcコードで迷っています.

これは PPC 関数です。引数が 1 つあります。バッファだと思います (パラメータは void *,int) http://pastebin.com/RNRAWCpi

これは私の擬似cが進んだ限りです:

unsigned long long* data=(unsigned long long*)pBuffer; // file data
unsigned long long crypt = 0x0000;
unsigned long long next_crypt;
unsigned int len = size >> 3;

for(unsigned int i=0; i<len;i++) {
    next_crypt = crypt+data[i]-0x9A6C9A19;      
    data[i] = ((data[i]<<0x18)|(data[i]>>0x14))+0x9A6C9A19;
    data[i] =  (data[i]<<0x3)|(data[i]>>0x29);
    data[i] = data[i] - crypt;
    crypt = next_crypt;     
}

たとえば、crypt が r29 と r30 の 2 つのレジスタに分割されるのはなぜですか。

どんな援助でも大歓迎です。

4

1 に答える 1

0

PowerPC が 32 ビットの場合、"long long" (64 ビット) を 2 つの 32 ビット レジスタに分割する必要があります。他に具体的な質問はありますか?

于 2011-08-22T11:19:23.053 に答える