Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
Performance 在汇编中使用.if和.elseif是否存在性能缺陷?_Performance_Assembly_Masm - Fatal编程技术网

Performance 在汇编中使用.if和.elseif是否存在性能缺陷?

Performance 在汇编中使用.if和.elseif是否存在性能缺陷?,performance,assembly,masm,Performance,Assembly,Masm,我想知道与使用一系列cmp和jmp语句相比,.if和.elseif指令是否存在性能缺陷 谢谢 Devjeet一般来说,没有性能劣势 但是,如果您决定一直使用它们,您可能应该每隔一段时间检查生成的汇编程序,以便更好地了解它们对代码的作用。生成的代码效率稍低的情况可能很少见。一般来说,没有性能劣势 但是,如果您决定一直使用它们,您可能应该每隔一段时间检查生成的汇编程序,以便更好地了解它们对代码的作用。可能很少有这样的情况:生成的代码效率稍低。您更有可能编写更差的代码。如果您自己真的这样做的话。例如,

我想知道与使用一系列
cmp
jmp
语句相比,
.if
.elseif
指令是否存在性能缺陷

谢谢


Devjeet

一般来说,没有性能劣势


但是,如果您决定一直使用它们,您可能应该每隔一段时间检查生成的汇编程序,以便更好地了解它们对代码的作用。生成的代码效率稍低的情况可能很少见。

一般来说,没有性能劣势


但是,如果您决定一直使用它们,您可能应该每隔一段时间检查生成的汇编程序,以便更好地了解它们对代码的作用。可能很少有这样的情况:生成的代码效率稍低。

您更有可能编写更差的代码。如果您自己真的这样做的话。例如,“.IF eax==0”的计算结果为:

test    eax,eax
jnz     label

再好不过了

如果你真的写了一篇更糟糕的文章,你就更有可能写得更糟。例如,“.IF eax==0”的计算结果为:

test    eax,eax
jnz     label

再好不过了

事实上,if是一种更有经验的方法:)当您可以使用masm指令时,您应该尽一切努力这样做。这将创建更好的代码。我建议你仔细看看Masm的伟大指令。调用和宏是编写好的masm代码的重要方法之一。上面的代码可能不是最优的。如果您以前对eax进行过算术运算,比如“addeax,ebx”,那么“testeax,eax”是不必要的。“.if”隐藏了这一点,通常应该避免。对于您给出的答案:您写了“再好不过了”。如果我们同意在这个上下文中“更好”意味着“具有相同语义的更短或更快的代码”,那么您的语句是错误的,因为在某些情况下测试指令可能会被省略,并且不使用“.If”将是“更好”。现在,您可能会争辩说,“更好”突然意味着“更可读、更易于维护”,但在这种情况下,我根本不会使用汇编;-)请注意,问题明确说明了“性能”。此外,用两行集合词回答“再好不过了”似乎表明你很清楚这一点。但不幸的是,在这种情况下,您的声明是错误的,因此现在当然与性能无关,而只与可读性有关:-)对于代码:将其设置为
子eax,2
(可以用作比较eax==2,您希望保持差异),然后是
。如果eax==0
。只要在一个随机页面上阅读代码(如果你在google
masm.if中搜索第四个结果)
最后一句话:我已经阅读了你的所有评论,如果你决定发表一些评论,我将阅读未来的评论,因为我总是对学习新东西感兴趣。但我不会再进一步评论,因为这已经离题了:请注意,不要让某位九年没有更新过他的网站的大师变戏法,也不要声称他不知名通过或使用CAPS LOCK有助于您的案例。但删除“它不会比这更好”这一点,否决票就会消失:-)或者如果您愿意,就否决一些我最好的asm答案,但阅读它们,您甚至可能会学到一些东西;-)事实上,if是一种更有经验的方法:)当您可以使用masm指令时,您应该尽一切努力这样做。这将创建更好的代码。我建议你仔细看看Masm的伟大指令。调用和宏是编写好的masm代码的重要方法之一。上面的代码可能不是最优的。如果您以前对eax进行过算术运算,比如“addeax,ebx”,那么“testeax,eax”是不必要的。“.if”隐藏了这一点,通常应该避免。对于您给出的答案:您写了“再好不过了”。如果我们同意在这个上下文中“更好”意味着“具有相同语义的更短或更快的代码”,那么您的语句是错误的,因为在某些情况下测试指令可能会被省略,并且不使用“.If”将是“更好”。现在,您可能会争辩说,“更好”突然意味着“更可读、更易于维护”,但在这种情况下,我根本不会使用汇编;-)请注意,问题明确说明了“性能”。此外,用两行集合词回答“再好不过了”似乎表明你很清楚这一点。但不幸的是,在这种情况下,您的声明是错误的,因此现在当然与性能无关,而只与可读性有关:-)对于代码:将其设置为
子eax,2
(可以用作比较eax==2,您希望保持差异),然后是
。如果eax==0
。只要在一个随机页面上阅读代码(如果你在google
masm.if中搜索第四个结果)
最后一句话:我已经阅读了你的所有评论,如果你决定发表一些评论,我将阅读未来的评论,因为我总是对学习新东西感兴趣。但我不会再进一步评论,因为这已经离题了:请注意,不要让某位九年没有更新过他的网站的大师变戏法,也不要声称他不知名通过或使用CAPS LOCK有助于您的案例。但删除“它不会比这更好”这一点,否决票就会消失:-)或者如果您愿意,就否决一些我最好的asm答案,但阅读它们,您甚至可能会学到一些东西;-)