Assembly 是否使用Intel寄存器来;“预期用途”;提高效率?
声称每个登记册都有一个预期目的,更重要的是 当英特尔的工程师设计 原来的8086处理器,他们有 每个人心中都有一个特殊的目的 登记因为他们设计了 指令集,他们创建了许多 优化和特殊说明 基于他们期望的功能 要执行的每个寄存器。使用 根据英特尔的 原始计划允许代码执行 充分利用这些优化。 不幸的是,这似乎是一个迷失的方向 艺术很少有程序员知道英特尔的 总体设计,大多数编译器 过于简单化或专注于 使用寄存器的执行速度 对。了解 寄存器和指令集匹配 然而,团结在一起是一个重要的问题 踏上通往轻松之路 尺寸编码 是否有其他来源证实这篇文章?如果是的话,我真的很想看看Assembly 是否使用Intel寄存器来;“预期用途”;提高效率?,assembly,intel,Assembly,Intel,声称每个登记册都有一个预期目的,更重要的是 当英特尔的工程师设计 原来的8086处理器,他们有 每个人心中都有一个特殊的目的 登记因为他们设计了 指令集,他们创建了许多 优化和特殊说明 基于他们期望的功能 要执行的每个寄存器。使用 根据英特尔的 原始计划允许代码执行 充分利用这些优化。 不幸的是,这似乎是一个迷失的方向 艺术很少有程序员知道英特尔的 总体设计,大多数编译器 过于简单化或专注于 使用寄存器的执行速度 对。了解 寄存器和指令集匹配 然而,团结在一起是一个重要的问题 踏上通往轻松之路
请注意,我并不是说像
STOS
这样的快速操作使用edi
——我只是想知道如果我使用eax
和esi
作为计数器而不是ecx
,是否会导致性能下降?或者这仅仅是关于可读性的问题?否,现在不是了,或者至少不是很经常。使用ECX作为计数器可以使用循环指令。曾经,这是一个显著的优势,但在最新的CPU上,循环的执行时间比DEC-ECX/JNZ的组合要长。其可能的优势在于,它减少了内存带宽的使用,这是一个越来越常见的瓶颈。当/如果您可以使用其他形式(如LOOPNZ)时,这也可能是一个优势,使用单独的指令进行模拟可能会相对复杂。指令集中有使用特定寄存器的指令,这些寄存器更小(通常更快)而不是针对任何寄存器的等效函数。最明显的是AX与其他函数的对比。