我想对 Objective-C 程序中的变量执行 ROR 和 ROL 操作。然而,我无法做到这一点——我不是装配专家。
这是我到目前为止所做的:
uint8_t v1 = ....;
uint8_t v2 = ....; // v2 is either 1, 2, 3, 4 or 5
asm("ROR v1, v2");
我得到的错误是:
未知大小后缀的指令助记符的未知用途
我怎样才能解决这个问题?
编辑:代码不需要使用内联汇编。但是,我还没有找到使用 Objective-C / C++ / C 指令执行此操作的方法。
要在标准 C 中执行此操作,您可以执行以下操作:
var = (var << shift) | (var >> (sizeof(var)*CHAR_BIT-shift))
无论如何,大多数编译器都会识别该模式并将其优化为单个指令(如果目标支持它)。
你可以在这里阅读更多:http://en.wikipedia.org/wiki/Circular_shift#Implementing_circular_shifts
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)