0

如何解析表达式并将其放入寄存器中,在内联汇编中使用它,甚至再次使用它并将其放在某个地方?

例如:

EAX=a[i]; //Any expression that valid in C++
__asm xor eax,0xFFFF //Do something with this
b[i]=EAX; //And then put it in some variable.

顺便说一句,原因是性能。

4

1 回答 1

2

几个编译器有编译器特定的方法来完成这个。但这几乎不值得去做。

这几乎不值得做的原因有很多:

  • 编译器通常会生成比您大多数时间编写的代码更好的代码。
  • 即使不是这样,您也可以经常稍微调整您的代码,以说服编译器编写至少与您可以编写的代码一样好的代码,并且仍然让您的程序保持可移植性。
  • 具有感知性能问题的代码实际上对性能并不重要,因为程序在那里花费了 0.01% 的时间。
  • 你希望你的程序保持标准的 C++ 并且不想用大量的#ifdef守卫把它弄得乱七八糟。

您展示的示例不是很有说服力。

于 2012-10-14T18:20:31.607 回答