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

标签 objective-c xcode x86-64 inline-assembly

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

相关文章:

ios - UITableViewCell 中的 UIDatePicker 无法调整大小(高度)

ios - Xcode 6.0.1 - 要么卡在启动屏幕 xib 上,要么只显示黑屏。错误不知从何而来

assembly - 为什么在push指令时使用SIGSEGV

assembly - LFENCE 的 x86-64 使用

ios - UIWindow 无法填满新设备的屏幕?

ios - 获取当前 iOS 设备在/other/orientation 和隐藏键盘时的键盘高度

objective-c - NSFileManager 文件存在于路径 : & symbolic links

ios - 标记 NSString 以过滤数据(搜索)

xcode - 在 xcode 4 中构建分发配置时找不到库

x86 - 引用 x86 相关 CPU 的 32 位和 64 位版本程序的最正确方法是什么?