__CFSHL__ 做什么?

逆向工程 艾达 拆卸
2021-06-23 23:04:42
  unsigned __int8 v2; // cf@1
v2 = __CFSHL__(v3, 28);

什么是CFSHL功能是什么意思?我似乎找不到任何关于它的文档。

1个回答

此函数通常会生成“左移进位标志”运算符 (CFSHL)。

__CFSHL__(x, y) // Generate a carry flag for (x<<y)

事实上,在反编译时,我们有时会丢失非常低级操作的起源,例如操作进位标志。最初,此操作必须与一些可能被反编译器遗漏(或优化掉)的算术运算相关联。但是,对进位位的操作eflags仍然在这里,所以为了保持反编译程序的语义等价性,Hexrays 的反编译器有时被迫使用这样的技巧(这似乎来自外太空,即使他们可能有一个完美的自然原因)。