我想在 Objective-C 程序中对变量执行 ROR 和 ROL 操作。然而,我做不到——我不是装配专家。
这是我到目前为止所做的:
uint8_t v1 = ....;
uint8_t v2 = ....; // v2 is either 1, 2, 3, 4 or 5
asm("ROR v1, v2");
我得到的错误是:
Unknown use of instruction mnemonic with unknown size suffix
我该如何解决这个问题?
编辑:代码不需要使用内联汇编。但是,我还没有找到使用 Objective-C/C++/C 指令执行此操作的方法。
最佳答案
要在标准 C 中执行此操作,您可以执行以下操作:
var = (var << shift) | (var >> (sizeof(var)*CHAR_BIT-shift))
无论如何,大多数编译器都会识别该模式并将其优化为单个指令(如果目标支持它)。
您可以在此处阅读更多信息:http://en.wikipedia.org/wiki/Circular_shift#Implementing_circular_shifts
关于objective-c - 在 Objective-C 中使用内联汇编对变量进行 ROL/ROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16387745/