Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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
Assembly 用于移动数据范围的汇编程序谓词_Assembly - Fatal编程技术网

Assembly 用于移动数据范围的汇编程序谓词

Assembly 用于移动数据范围的汇编程序谓词,assembly,Assembly,当我13岁时,我开始为MSX计算机编程,最终编写汇编代码来执行一些事情。MSX拥有的强大命令之一是移动datablok的单个命令。 这通常用于快速移动屏幕 现在我使用的是快速线扫描相机,我再次需要这样一个快速命令。 这样我可以向下移动位图的一部分,并用新的linescan数据填充第一行 我从未在今天的奔腾计算机上编写过汇编程序。 所以我想知道,这些天奔腾计算机也有这样的汇编指令吗? 我也可以在下一个循环中用C++ c/c来做,但是我知道,一个汇编程序的指令会快很多。当然,x86有 ReVMOSD

当我13岁时,我开始为MSX计算机编程,最终编写汇编代码来执行一些事情。MSX拥有的强大命令之一是移动datablok的单个命令。 这通常用于快速移动屏幕

现在我使用的是快速线扫描相机,我再次需要这样一个快速命令。 这样我可以向下移动位图的一部分,并用新的linescan数据填充第一行

我从未在今天的奔腾计算机上编写过汇编程序。 所以我想知道,这些天奔腾计算机也有这样的汇编指令吗?
我也可以在下一个循环中用C++ c/c来做,但是我知道,一个汇编程序的指令会快很多。

当然,x86有<代码> ReVMOSD,但是现在不推荐使用它,因为它现在是次优的。libc中的
memcpy
函数通常经过优化,以使用在目标平台上复制数据的最快方式。查看libc时,我注意到还有一个memmove动词see,这是否意味着该命令也经过了优化?@user613326 see for memmove vs memcpy。如果没有重叠的地址,memcpy可能会更快,因为它在复制数据的方式上不受限制。@Michael-不,不是
rep movsd
仍然是将数据从一个地方移动到另一个地方的最快方式。这是另一种说法,有时它是不可能被使用的,因为你必须在复制周期中进行一些检查。@johnfound:Intel在他们的优化手册中说,对于大于2kB的块,AVX速度更快。从Ivy Bridge开始,他们添加了“增强的REP-MOVSB”,这应该比REP-MOVSD和REP-MOVSB的组合要快,但AVX的性能仍然优于它,除非您复制的数据量很小。最后,除了非常特定的应用程序之外,您不太可能击败
memcpy