Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-将表达式放入寄存器并在程序集中使用_C++_Visual C++_Inline Assembly - Fatal编程技术网

C++ C++;-将表达式放入寄存器并在程序集中使用

C++ C++;-将表达式放入寄存器并在程序集中使用,c++,visual-c++,inline-assembly,C++,Visual C++,Inline Assembly,如何解析表达式并将其放入寄存器,在内联汇编中使用它,甚至再次使用它并将其放入某个位置 例如: 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. 顺便说一句,原因在于性能。一些编译器有特定于编译器的方法来实现这一点。但这几乎不值得去做 这几乎不值得做的原因如下: 编译器通常

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

例如:

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.

顺便说一句,原因在于性能。

一些编译器有特定于编译器的方法来实现这一点。但这几乎不值得去做

这几乎不值得做的原因如下:

  • 编译器通常会生成比大多数时候编写的代码更好的代码
  • 即使没有,您也可以经常稍微调整代码,以说服编译器编写至少与您编写的代码一样好的代码,并且仍然保持程序的可移植性
  • 有感知到的性能问题的代码实际上对性能并不重要,因为程序在那里花费了0.01%的时间
  • <>你希望你的程序保持标准C++,不想用吨代码来混淆它。

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

取决于编译器。的文档。但是现在的编译器在大多数情况下都比你更好地优化汇编代码是一条路。@d是的,我知道。我在反汇编中看到了这一点,我可以编写出更好的代码。(将3个动作组合成一个完成这3个动作的动作。)@elmigranto这只是一个示例man=\。@DividedByZero,然后粘贴真实代码。