Я написал код, который выглядит так:
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. Даже когда я компилирую с флагом -O0
, gcc превращает это в одну инструкцию xor
в разборке. Можно ли заставить его написать эти конкретные инструкции asm с флагом или я должен использовать встроенный язык ассемблера?