- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我会引用我的教科书(计算机组织与设计),然后我会问我的问题:
Compiling if-then-else into Conditional branches
In the following code segment, f, g, j, i and j are variables. If the five variables f through j correspond to the five registers $s0 through $s4, what is the compiled MIPS code for this C if statement?
if (i == j) f = g + h; else f = g - h;
Figure 2.9 is a flowchart of what the MIPS code should do. The first expression compares for equality, so it would seem that we would want the branch if registers are equal instruction (beq). In general, the code will be more efficient if we test for the opposite condition to branch over the code that performs the subsequent then part of the if (the label Else is defined below) and so we use the branch if registers are not equal instruction (bne):
bne $s3, $s4, Else # go to Else if i ≠ j
最佳答案
效率不是直接比较 bne 和 beq 的机器代码。文本描述了通过编码来优化整体性能以缩短最常见的代码路径。
如果您假设这些值更有可能不相等,那么在使用 bne 时只需要处理一条指令,如果您使用 beq,则必须在失败时执行额外的跳转。
最短的路径是通过比较,失败而不是跳跃。
来自 http://www.cs.gmu.edu/~setia/cs365-S02/class3.pdf :
分支罕见案例
18 美元,19 美元,L1
"Now if we test whether $s3 equals $s4, when we have no information whatsoever about the content of those registers, it's not reasonable to assume that they're likely to be equal; on the contrary, it's more likely that they're not equal, which should result in using beq instead of bne."
关于assembly - MIPS bne beq 计算机组织与设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14104183/
我有一组说明如下: loop: sll $t1, $t0, 2 # t1 = (i * 4) add $t2, $a0, $t1
所以,我会引用我的教科书(计算机组织与设计),然后我会问我的问题: Compiling if-then-else into Conditional branches In the following
我正在研究运行 Cortex-M4 处理器和 ARM/Thumb 指令集的 STM32l475 微 Controller 。我看到(来自 objdump )有 beq.n和 bne.n在 ARM 程序
例如,在 add 上我们有 addi 用于添加一个寄存器和一个立即数,为什么在这种情况下我们不能有 bnei 或 beqi ... 我应该回答这个问题,但我不确定...有什么帮助吗? 最佳答案 原因是
例如,在 add 上我们有 addi 用于添加一个寄存器和一个立即数,为什么在这种情况下我们不能有 bnei 或 beqi ... 我应该回答这个问题,但我不确定...有什么帮助吗? 最佳答案 原因是
我有这个汇编代码,我应该将其转换为二进制形式的机器代码: .text .align 2 .global main .equ val,0x
我是一名优秀的程序员,十分优秀!