Andes Workshop http://forum.andestech.com/ |
|
register變數 http://forum.andestech.com/viewtopic.php?f=16&t=619 |
Page 1 of 1 |
Author: | cindy [ Thu Sep 06, 2012 11:26 am ] |
Post subject: | register變數 |
常常使用的local變數,加上register關鍵字, 可以加快執行效率。 例如下面的code Code: register int i; int j; for(i=0;i<0x100000;i++) j++; 上面將i設定成放在暫存器裡.. 編出來的for loop如下: Code: 00500152: addi $r6,$r6,#1 00500156: sethi $r0,#255 0050015a: ori $r0,$r0,#0xfff 0050015e: slts $r15,$r0,$r6 00500162: beqz $r15,0x500146 <foo+18> 其中r6是變數i。 如果不設register的話.. Code: code如下: int i; int j; for(i=0;i<0x100000;i++) j++; 組合語言如下: Code: 00500156: lwi $r0,[$fp+#-12] 0050015a: addi $r0,$r0,#1 0050015e: swi $r0,[$fp+#-12] 00500162: sethi $r0,#255 00500166: ori $r0,$r0,#0xfff 0050016a: lwi $r1,[$fp+#-12] 0050016e: slts $r15,$r0,$r1 00500172: beqz $r15,0x50014a <foo+22> 和上面比,多了3行。 執行多次之後,需要執行的code數量差距相當大。 |
Page 1 of 1 | All times are UTC + 8 hours [ DST ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |