Computer Architecture,  Study

[Computer Architecture] rep; ret Instruction for x86-64

x86-64 assembly를 보다 다음과 같은 instruction stream에서 rep; ret라는 instruction이 나왔다.

.L2:
    addq    %rdx, %rax # result = t
    shrq    %rdi       # x >>= 1
    jne     .L2        # if(x) goto loop
    rep; ret

일단 rep instruction이 쓰이는 이유는 AMD processors’ branch predictors에 문제가 있었다고 한다. ret instruction은 single-byte instruction으로 conditional jump instruction 뒤에 있는 경우 rep dummy instruction 추가를 통해 문제를 workaround를 한다고 한다.

왜 branch target address가 single-byte address를 가진 instruction인 경우 안되는지는 모르지만, 추축해보면 address granularity가 single-byte를 지원하지 못해서인 것으로 추측한다.

Reference

  1. https://stackoverflow.com/questions/20526361/what-does-rep-ret-mean
  2. https://board.flatassembler.net/topic.php?t=6264

Leave a Reply

Your email address will not be published. Required fields are marked *