使用Objective-C中的内联汇编对变量进行ROL / ROR

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

点赞