只有popq指令会同时用到寄存器文件的两个写端口。对于指令popq%rsp, E和M两个写端口会用到同一个地址,但是写入的数据不同。为了解决这个冲突,必须对两个写端口设立一个优先级,这样一来,当同一个周期内两个写端口都试图对一个寄存器进行写时,只有较高优先级端口上的写才会发生。那么要实现下面程序中popq%rsp确定的行为,哪个端口该具有较高的优先级呢?
.text .globl poptest poptest: movq %rsp,%rdi pushq $0xabcd popq %rsp movq %rsp,%rax movq %rdi,$rsp ret