4.58
it’s not a hard problem, focus on key points:
- fetch popq instruction twice.
- first time fetch popq, works like iaddq; second
time fetch popq2, works like mrmovq - load/use condition should be popq2 not popq.
phase | popq rA | popq2 rA |
---|---|---|
works like | iadd $8, %rsp | mrmovq -8(%rsp), rA |
F | valP = PC | valP = PC + 2 |
D | valB=R[rsp] | valB=R[rsp] |
E | valE=valB+8 | valE=valB-8 |
M | valM=M8[valE] | |
W | R[rsp]=valE | R[rA]=valM |
check file ./chapter4/code/sim/pipe/pipe-1w.hcl
only watch changes with origin pipe-1w.hcl
(cd ./chapter4/code/sim/pipe; diff -u origin-pipe-1w.hcl pipe-1w.hcl)
!INCLUDE './code/sim/pipe/pipe-1w.diff'
当前内容版权归 DreamAndDead 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 DreamAndDead .