2

将无符号整数清零的最快方法是什么?

我目前只是将值设置为 0,但我不知道是否有任何技巧可以将变量归零?在我当前的项目中,我需要几个时钟周期。我使用的是标准 8051 处理器,如果有帮助的话,我需要将两个不同的变量归零。

4

5 回答 5

5

该问题标记为 8051,因此如果需要将寄存器归零,则将寄存器与自身进行异或将是一种更快的归零方法,而不是在其中移动零。一个操作码获取和解码与操作码获取解码和操作数获取。

如果您使用高级语言而不是手工汇编或用 asm 编写,那么最好使用var = 0. 编译器将负责所需的优化。

于 2012-05-06T19:47:44.503 回答
3

为人类编写代码,不要浪费任何精力优化不需要优化的东西。当您想将零分配给变量时,然后将零分配给变量:x = 0;

快速编写正确的程序比编写正确的快速程序更容易。

于 2012-05-06T19:56:30.700 回答
2

I believe the compiler will optimize this sort of thing for you. Remember that micro-optimizations lead to micro-results.

于 2012-05-30T05:36:37.027 回答
1

微观优化导致微观结果。

您可能会使用自身对变量进行异或运算以达到零。你的编译器很有可能已经这样做了,如果不是更快的话。

于 2012-05-06T19:48:02.050 回答
0

首先尝试实现一种对包含相关代码的代码块进行计时的方法,如果您还没有这样做的话。

然后,尝试 var = 0; 并使用在清单中生成汇编程序的编译器开关。然后对 XOR 解决方案做同样的事情。它代表了一些额外的工作,但是你会在那里得到结果。

于 2012-05-06T23:14:40.203 回答