This article声称每个注册簿都有预期目的,更重要的是,
当英特尔的工程师设计时 最初的8086处理器,他们有 每个人都有一个特殊的目的 寄存器。正如他们设计的那样 指令集,他们创造了许多 优化和特殊说明 基于他们期望的功能 每个注册表执行。运用 根据英特尔的注册 原始计划允许代码采取 充分利用这些优化。 不幸的是,这似乎是一个迷失 艺术。很少有程序员知道英特尔的 整体设计,大多数编译器都是 太简单化或专注于 执行速度使用寄存器 正常。了解如何 寄存器和指令集合适 但是,这是一个重要的问题 走在路上,毫不费力 大小译码。
还有其他来源证实这篇文章吗?如果是这样,我真的很想看看。
请注意,我不是在讨论像STOS
这样的快速操作使用edi
的情况 - 我只是想知道如果我使用eax
和{{ 1}}作为计数器而不是esi
还是只是关于可读性?
答案 0 :(得分:5)
指令集中有指令使用特定的寄存器,这些寄存器比针对任何寄存器的等效函数更小(并且通常更快)。
答案 1 :(得分:4)
不,不再是 - 或者至少不经常。使用ECX作为计数器可以使用LOOP指令。有一段时间,这是一个显着的优势,但在最新的CPU上,LOOP的执行时间比DEC ECX / JNZ的组合需要更长的时间。可能的优点是它减少了内存带宽使用,这是一个越来越频繁的瓶颈。当/如果你可以使用像LOOPNZ这样的其他形式时,这也是一个优势,使用单独的指令来模拟它可能相对复杂。