【问题标题】:Why are branch instructions faster than jump instructions?为什么分支指令比跳转指令快?
【发布时间】:2014-06-24 01:10:12
【问题描述】:

查看amtel avr instruction set,我注意到分支指令如果执行则需要2 个周期,如果不执行则需要1 个周期,而跳转指令需要3 个周期。

这是为什么?

【问题讨论】:

  • 我读到 jmp 允许访问整个程序内存。这可能是为什么?
  • 另外,如果我想分支但没有条件,我该怎么做而不是 jmp
  • JMP 只是一个 4 字节指令。请注意,RJMP 是一条 2 字节指令,执行时间为 2 个时钟。
  • @Jester:RJMP 可以转到标签而不是特定数量的指令(我知道它是同一回事,但我的意思是我可以只写标签吗?)
  • 是的,汇编器会为你计算出距离。但是,它应该在 2k 范围内。

标签: assembly avr


【解决方案1】:

这似乎来自 OP-Code 长度。 JMP 指令是 32 位指令,因为它必须从单独的字中读取地址。这种读取会花费额外的时钟周期。

分支和相对跳转 rjmp 和间接跳转 ijmp 是 16 位指令,同样在 2 个时钟周期内执行。

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 2016-07-26
    • 2012-04-06
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多