次のようなコードを書きました。
char* xor_and_print(byte arr[], size_t buffSize, byte key)
{
size_t i;
for(i = 0; i < buffSize; i++)
{
printf("%c", (arr[i] & ~key) | (key & ~arr[i]));
}
putchar('\n');
}
これは、より多くの命令に展開された xor 操作です。gcc-6.3.0 を使用しています。flag を指定してコンパイルした場合でも-O0
、gccxor
は逆アセンブリでこれを 1 つの命令に変換します。これらの特定の asm 命令をフラグ付きで強制的に記述することは可能ですか、それともインライン アセンブリ言語を使用する必要がありますか?