学一门汇编,学好寄存器就差不多了。
CPU就是在寄存器和内存之间捣鼓数据。
16位寄存器:AX --> AH、AL
32位寄存器:EAX --> 低16位AX --> AH、AL
64位寄存器:RAX --> 低32位EAX --> 低16位AX --> AH、AL
32位寄存器:WIN32、Windows XP。
AT&T :优先通过寄存器来存放参数。
![](https://img.haomeiwen.com/i894719/99db9999e0ec4106.png)
![](https://img.haomeiwen.com/i894719/511e3e28600560ec.png)
rdi:8字节 ---> edi:4字节
r8:8字节 ---> r8d:4字节
![](https://img.haomeiwen.com/i894719/b3520aec12dc98ea.png)
![](https://img.haomeiwen.com/i894719/2a754f82eb1308a2.png)
如果long类型参数超过4个字节,才会使用类似rdi的8字节寄存器。如下图:
![](https://img.haomeiwen.com/i894719/90bd57fcc166b7a1.png)
![](https://img.haomeiwen.com/i894719/5a252cfd950dabf2.png)
超过7个寄存器的情况:
![](https://img.haomeiwen.com/i894719/342dba73125ead01.png)
![](https://img.haomeiwen.com/i894719/29a1e0d7efdaa65c.png)
寄存器劈成两半
![](https://img.haomeiwen.com/i894719/77202f07fef77613.png)
网友评论