在編寫彙編代碼中有關於寄存器使用的規則,比如在X86-64中,寄存器%rax就代表返回值,%rdi是代表函數中第一個參數,%rsi代表第二個參數,基於這些規則,編寫彙編代碼是就可以直接使用對應寄存器裡面的值。

可是我有個疑問,因為在編寫彙編代碼的時候開頭並不需要語句例如 mov 參數n %rdi 這樣將參數傳入指定寄存器的語句,那這個參數是什麼時候存入寄存器的呢,彙編不是可以直接翻譯為二進位機器代碼的嗎?難道還有比機器代碼更底層的機制把這件事事先做好?

如圖中第4-5行之間,參數x已經是在%rdi中了,可是前後語句並沒有說明什麼時候將x值放入%rdi的啊

相關文章