我想在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