gpt4 book ai didi

assembly - 计算汇编语言指令的成本

转载 作者:行者123 更新时间:2023-12-02 22:11:00 26 4
gpt4 key购买 nike

我正在阅读《龙》书中有关代码生成的内容。它提供了一种简单的方法将成本与每个目标语言关联相关联。

We shall assume each target-language instruction has an associated cost. For simplicity, we take the cost of an in­struction to be one plus the costs associated with the addressing modes of the operands. This cost corresponds to the length in words of the instruction. Addressing modes involving registers have zero additional cost, while those in­volving a memory location or constant in them have an additional cost of one, because such operands have to be stored in the words following the instruction.

一些例子:

  • 指令LD R0,R1将寄存器R1的内容复制到寄存器R0中。这指令的成本为 1,因为没有额外的内存字必填。
  • 指令LD R0,M将内存位置M的内容加载到寄存器R0中。由于地址为内存位置 M 位于指令后面的字中。
  • 该指令LD R1,*100(R2)将给定的值加载到寄存器R1中通过内容(内容(100+内容(R2)))。成本是三因为常数 100 存储在指令后面的字中。这里contents(x)表示x表示的寄存器或内存位置的内容。

我了解了前两个示例的成本计算。第三个我没看懂3 成本如何?另外我不明白上面引用的文本中的粗体部分。

根据我的部分理解,我认为 BLTZ *R3,R0 的成本为 3,就像上面类似的第三个示例一样。但这样做的代价是 1. 如何?

注意 BLTZ r, L 如果寄存器 r 中的值为小于零,并允许控制传递到下一条机器指令如果没有。

最佳答案

I don't get the third one. How is the cost 3?

  • 1 为说明
  • 1 用于从下一个单词中获取常量 100
  • 1 表示从 R2+100 中获取值

cost of BLTZ *R3,R0 to be 3 as it is so for the similar third example above. But the cost of this is 1. How?

因为:涉及寄存器的寻址模式的额外成本为零

I don't understand the bold part in the quoted text above.

显然,该架构的机器代码使用一个字来指定操作码以及寄存器操作数,如果需要常量,还可以使用一个附加字。

例如LD R1,*100(R2)需要2个字。第一个指定操作(具有寄存器相对偏移量的LD)以及目标寄存器R1 和基址寄存器R2。这些是字中的位域。然后,第二个字包含 100,由于第一个字中的操作码,CPU 知道要获取该值。

一些固定长度的架构将常量打包到第一个字中,但显然它们的范围有限。使用单独的单词可以实现完整的范围。

关于assembly - 计算汇编语言指令的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com