【问题标题】:Query regarding addressing modes寻址方式查询
【发布时间】:2018-08-03 02:59:51
【问题描述】:

索引寻址模式和位移模式的主要区别是什么?两者似乎相同,因为它们都具有偏移量和基址寄存器,并且通过将寄存器的内容与偏移量相加来计算有效地址。

【问题讨论】:

  • 您能举例说明您对每种情况的含义吗?术语并不完全标准。例如,在 x86 上,索引寻址模式可以有 2 个寄存器,例如 [rdi + rax*4][rdi + rcx][1234567 + rcx*2]。 “位移”寻址模式不是一个标准术语,但它可能意味着具有 just 位移且没有寄存器的模式,例如 [1234567](或者更常见的符号名称为 @ 987654326@).
  • 这个链接:cs.iit.edu/~cs561/cs350/addressing/addsclm.html 好像说唯一的区别是一个有索引,另一个有一个基址寄存器,是吗?

标签: cpu-architecture


【解决方案1】:

在 MIPS 中,地址总是由两部分组成,一个是常量(16 位符号扩展),另一个是来自寄存器的值。

索引模式和位移模式之间的区别在于哪个部分用于什么:在索引模式中,常量部分是指某物的基数,而寄存器是对该事物的偏移/索引,而对于位移模式,寄存器指向某事物的基数,常量是该事物的偏移量。

所以这个:

两者似乎相同,因为它们都具有偏移量和基址寄存器,并且通过将寄存器的内容与偏移量相加来计算有效地址。

是真的。它们是一样的,间接模式和绝对模式也一样,它们只是语法结构:地址计算仍然有两部分,但是寄存器可以是 $0 或者常量可以是 0 并且汇编器允许你省略该部分(一些原始汇编程序实际上不支持该部分)。这只是不同地使用最终地址的两个部分。真的没有限制(除了常数有点窄),所以它可以更狂野,两个部分单独没有“好”的意思,但仍然求和到你想要的地址。

【讨论】:

  • 表示两种寻址方式中偏移量和寄存器的含义是两者区别的基础。
  • @Curious:是的,就像我说的那样,术语没有标准化。如果人们想为(reg) + imm16 的不同使用方式编造不同的名字,那很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多