淘客熙熙

主题:【原创】继续关于swap的讨论 -- 不锈钢破锣

共:💬22 🌺5 新:
全看分页树展 · 主题 跟帖
家园 是这样的,首先寄存器的读取速度远远快于内存。

寄存器在CPU内部,这样就不需要完成内存送到reg和reg存回内存这个步骤了,运算速度提高的不是一点半点,特别是复杂的算术运算。直接内存读取当然可以,但是人家编译器多半不肯那,

其次,编译器在生成中间代码的时候,会采用线性优化的方法来分配寄存器,是否会多分配出一个Reg取决于最后优化的结果。所以对于使用临时变量的那段代码,这里的temp是占有一个内存空间还是寄存器很难说。

可能的一个结果就是给a或者b一个reg,其余在内存中完成操作。

---------------

LOAD a R0;

MOV b a;

MOV R0 b;

---------------

不使用temp的情况下,编译器多半就照着代码翻,加法和赋值的开销基本是一样的,所以代码可能不变。同样的,分配寄存器按照上面说的来进行。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河