C 最快的归零方法

C 最快的归零方法,c,zero,8051,unsigned-integer,C,Zero,8051,Unsigned Integer,将无符号整数归零的最快方法是什么 我目前只是将值设置为0,但我不知道是否有任何技巧可以将变量归零?我需要一些时钟周期回到我目前的项目。我使用的是一个标准的8051处理器,我有两个不同的变量需要归零,如果这有帮助的话 问题的标签是8051,因此,如果需要将寄存器调零,那么将寄存器与自身进行异或运算将是一种更快的调零方法,而不是将其调零。一个操作码获取和解码与操作码获取和操作数获取 如果您使用的是更高级的语言,而不是在asm中手工组装或编写,那么最好使用var=0。编译器将负责所需的优化。微优化会产

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


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

问题的标签是8051,因此,如果需要将寄存器调零,那么将寄存器与自身进行异或运算将是一种更快的调零方法,而不是将其调零。一个操作码获取和解码与操作码获取和操作数获取


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

微优化会产生微结果


您可以将一个变量与其自身进行异或运算以获得零。很有可能你的编译器已经这样做了,如果不是更快的话。

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


快速生成正确的程序比快速生成正确的程序更容易。

如果您还没有完成,请首先尝试实现一种对包含相关代码的代码块计时的方法


然后,尝试var=0;并使用清单中生成汇编程序的编译器开关。然后对XOR解决方案执行相同的操作。它代表了一点额外的工作,但是你会得到结果

我相信编译器会为您优化这类内容。请记住,微优化会产生微结果。

您确定没有更好的优化机会吗?将其设置为
0
应该已经很快了。您是否真的因为变量分配而失去了性能?看起来非常微小。不是在我当前的中断中。它每10[我们]就中断一次。希望我在一开始就有先见之明选择一个更快的处理器,但我承诺使用我目前正在使用的处理器。谢谢。我想XORing也许能给我提供我需要的几个周期。感谢您的建议,self XOR的速度是最快的。但我很困惑,除非你直接在汇编程序中编程,否则几乎任何编译器都会以同样的方式初始化变量,那么我认为最好让编译器来优化。一个好的编译器会使用self-xor来实现零赋值,如果这是在目标机器上实现零赋值的最佳方式的话。GCC甚至可以在x86上实现这一点,至少在
-Os
…我肯定会接受这个建议,但这个项目专门针对优化当前存在的内容。除了我自己,这个代码不应该被其他人看到。@JoeWanja正在处理硬件寄存器。编写了一个引导rom控制台和一个NT设备驱动程序之后,根据经验,我可以说该代码不适合人类。是的,我明白了。标签把我弄糊涂了。