发生在movl中的故事

来源:互联网 发布:ubuntu分辨率命令 编辑:程序博客网 时间:2024/04/28 13:19

通常来说,学到汇编这个层次对于一个程序员来说已经是比较底层的知识了,但是有时候更进一步,探究一下汇编指令背后的故事也挺有意思的。

比如简单一个存储器读写,背后都隐藏着很多知识。

movl  A,%eax  //地址A中的内容被加载的eax寄存器中,实际上是一个存储器读操作。

1,CPU将地址A放到系统总线上

2,I/O桥将信号传递到存储器总线

3,主存接收到存储器总线上的地址信号,读出地址,从DRAM中取出数据字,并将数据写到存储器总线。

4,I/O桥将存储器总线信号翻译成系统总线信号,然后沿着系统总线传递

5,CPU接收到系统总线的中断,从系统总线读取数据,并将数据字写入eax


那么一条写指令呢,比如下面这条指令

movl  %eax,  A  //将eax寄存器中的内容吸入主存地址A中,实际上是一个存储器写操作。

1,CPU将地址放到系统总线上,

2,存储器从存储器总线上读出地址,并等待数据到达。

3,CPU将eax中的数据拷贝到系统总线。

4,主存从存储器总线上读取数据,并将数组写入对应的DRAM中。


0 0
原创粉丝点击