主题:【原创】继续关于swap的讨论 -- 不锈钢破锣
- 共: 💬 22 🌺 5
寄存器在CPU内部,这样就不需要完成内存送到reg和reg存回内存这个步骤了,运算速度提高的不是一点半点,特别是复杂的算术运算。直接内存读取当然可以,但是人家编译器多半不肯那,。
其次,编译器在生成中间代码的时候,会采用线性优化的方法来分配寄存器,是否会多分配出一个Reg取决于最后优化的结果。所以对于使用临时变量的那段代码,这里的temp是占有一个内存空间还是寄存器很难说。
可能的一个结果就是给a或者b一个reg,其余在内存中完成操作。
---------------
LOAD a R0;
MOV b a;
MOV R0 b;
---------------
不使用temp的情况下,编译器多半就照着代码翻,加法和赋值的开销基本是一样的,所以代码可能不变。同样的,分配寄存器按照上面说的来进行。
- 相关回复 上下关系8
😉有重大问题请教----- 1 觉昌安塔克世 字513 2006-10-27 15:38:47
🙂放到寄存器呀。。。 大大的熊 字0 2006-10-28 14:06:49
🙂不管放到什么地方, 觉昌安塔克世 字78 2006-10-28 17:07:59
🙂是这样的,首先寄存器的读取速度远远快于内存。
🙂你说什么?你知道什么是寄存器吧? 大大的熊 字126 2006-10-28 17:41:17
🙂不就是register吗?我的意思是--- 觉昌安塔克世 字255 2006-10-28 21:07:21
🙂没什么大好处。。。 大大的熊 字232 2006-10-28 21:29:48
🙂这该至少讲到cache里去吧 lanchong 字669 2006-10-30 11:57:12