我编写了如下代码:
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');
}
这是一个将异或操作分解为更多指令的操作。我正在使用 gcc-6.3.0。即使我使用-O0
标志进行编译,gcc 也会将其转换为反汇编中的一条xor
指令。是否可以强制它使用标志编写那些特定的 asm 指令,或者我必须使用内联汇编语言?