【问题标题】:Worst case memory access in 80x86 assembly80x86 汇编中的最坏情况内存访问
【发布时间】:2009-07-25 08:43:05
【问题描述】:

在 80486 计算机中,这条指令的最坏情况(包括取指)内存访问次数是多少:

add dword [x],0x123FA4

众所周知,没有操作数的操作码长度为两个字节。

【问题讨论】:

  • 或许您应该尝试阅读英特尔手册并尝试自己解决问题,而不是发布随机问题等待解释一些奇怪的事情。
  • 答案是 8 但我不知道为什么
  • 这不是我为考试而学习的作业!!!!!
  • 如果您打开书本并自己弄清楚这一点,您将对正在发生的事情有更高的理解,而不仅仅是让某人告诉您测试的答案。当您提交测试“StackOverflow”而不是您自己的名字时,您如何签名。
  • @Pax:你真的会称之为基本问题吗?考虑到它取决于指令字节的对齐方式?

标签: assembly


【解决方案1】:

从内存中,指令有一个操作码字节(“add”)、一个地址模式字节、一个 x 的偏移量(4 个字节)和一个常量(4 个字节)==> 10 个字节。我假设 486 一次从内存中获取 4 个字节,总线地址与 4 字节 DWORD 边界对齐。因此,无论您将它们放在哪里,10 个字节都可以说需要 3 次内存读取(= 10/4 向上取整)。但是,如果操作码字节位于 DWORD 的最后一个字节中,则剩余的 9 个字节跨越 3 个以上的 DWORDS,读取的总数实际上可以是 4。

要进行添加,必须获取位置 X。假设 X 跨越一个 DWORD 边界 -> 2 个读取。添加常量发生在 CPU 内部,并且总和被写回相同的 DWORD 边界拆分 --> 2 次写入。

所以,最坏的情况应该是 8 次内存操作。

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多