在编写汇编代码中有关于寄存器使用的规则,比如在X86-64中,寄存器%rax就代表返回值,%rdi是代表函数中第一个参数,%rsi代表第二个参数,基于这些规则,编写汇编代码是就可以直接使用对应寄存器里面的值。

可是我有个疑问,因为在编写汇编代码的时候开头并不需要语句例如 mov 参数n %rdi 这样将参数传入指定寄存器的语句,那这个参数是什么时候存入寄存器的呢,汇编不是可以直接翻译为二进位机器代码的吗?难道还有比机器代码更底层的机制把这件事事先做好?

如图中第4-5行之间,参数x已经是在%rdi中了,可是前后语句并没有说明什么时候将x值放入%rdi的啊

相关文章