<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Turbo C下的寄存器變量

      [摘要]在Turbo C下有種變量叫寄存器變量。使用寄存器的好處是可以提高程序的運行速度!因為減少了尋址時間。看下面的C代碼:main() int i,k; register j; for(i=1;i<=100;i++); for(k=1;k<=100;k++); for(j=1;j<=...
          在Turbo C下有種變量叫寄存器變量。使用寄存器的好處是可以提高程序的運行速度!因為減少了尋址時間。
      看下面的C代碼:
      main()
      {
      int i,k;
      register j;
      for(i=1;i<=100;i++);
      for(k=1;k<=100;k++);
      for(j=1;j<=100;j++);
      }
      這里j被聲明為寄存器變量。通過tcc -S后看它的部分匯編代碼。
      ======================================================================================
      ……  ……
      mov di,1
      jmp short @5
      @4:
      @3:
      inc di
      @5:
      cmp di,100
      jle @4
      @2:
      ; ?debug L 6
      mov word ptr [bp-2],1
      jmp short @9
      @8:
      @7:
      inc word ptr [bp-2]
      @9:
      cmp word ptr [bp-2],100
      jle @8
      @6:
      ; ?debug L 7
      mov si,1
      jmp short @13
      @12:
      @11:
      inc si
      @13:
      cmp si,100
      jle @12
      ……  ……
      ======================================================================================
      看到了!里面有di和si兩個寄存器。但是只有j被聲明為寄存器變量,為什么會出現兩個呢?這個我沒有找到什么合理的解釋,也可能是由于程序中的變量少(少的范圍是1-3個,如果使用兩個變量,一個為普通變量,一個為寄存器變量,在匯編的代碼下兩個變量均是使用寄存器)。
          在Turbo C中寄存器變量的個數最多只能使用兩個(因為寄存器這個資源是很寶貴的)。但是如果聲明多個寄存器變量的話,在編譯時并不會報錯,但這并不表示可以定義多個寄存器變量。同樣,用tcc -S生成匯編代碼后可以看到最多也就使用了di和si兩個寄存器。
          在一個程序中寄存器變量只能聲明兩個,肯定對于我們來說是少了點,但是我們也要合理的運用它。如果把它用在程序中規模比較大的循環中,效果也是可佳的(人能感覺到的話,可能不現實吧?我沒有用過太大規模的循環)?傊,為了自己程序的速度,合理的利用這兩個寶貴的寄存器變量吧!  


      日韩精品一区二区三区高清