<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 數據類型 * 所有MIPS指令都是32位長的 * 各單位:1字節=8位,半字長=2個字節,1字長=4個字節 * 一個字符空間=1個字節 * 一個整型=一個字長=4個字節 * 單個字符用單引號,例如:'b' * 字符串用雙引號,例如:"A string" ## 寄存器 |寄存器編號 |寄存器名| 寄存器用途| |---|---|---| |0| zero| 永遠返回零| |1|$at|匯編保留寄存器(不可做其他用途)| |2-3|$v0 - $v1|(Value簡寫)存儲表達式或者是函數的返回值| |4-7|$a0 - $a3|(Argument簡寫)存儲子程序的前4個參數,在子程序調用過程中釋放| |8-15|$t0 - $t7|(Temp簡寫)臨時變量,同上調用時不保存| |16-23|$s0 - $s7|(Saved or Static簡寫?)靜態變量?調用時保存| |24-25|$t8 - $t9|(Temp簡寫)算是前面$0~$7的一個繼續,屬性同$t0~$t7| |26-27|$k0 - $k1|(breaK off簡寫?)中斷函數返回值,不可做其他用途| | 28|$gp |(Global Pointer簡寫)指向64k(2^16)大小的靜態數據塊的中間地址(字面上好像就是這個意思,塊的中間)| | 29|$sp |(Stack Pointer簡寫)棧指針,指向的是棧頂| | 30| $s8/$fp |(Saved/Frame Pointer簡寫)幀指針| | 31|$ra| 返回地址,目測也是不可做其他用途| ## 程序結構 * 本質其實就只是數據聲明+普通文本+程序編碼(文件后綴為.s,或者.asm也行) * 數據聲明在代碼段之后(其實在其之前也沒啥問題,也更符合高級程序設計的習慣) ### 數據聲明 - 數據段以 .data為開始標志 - 聲明變量后,即在主存中分配空間。 ### 代碼 * 代碼段以 **.text**為開始標志 * 其實就是各項指令操作 * 程序入口為**main:**標志(這個都一樣啦) * 程序結束標志(詳見下文) ### 注釋 ``` # Comment giving name of program and description of function # Template.s #Bare-bones outline of MIPS assembly language program .data # variable declarations follow this line      # 數據變量聲明 # ... .text # instructions follow this line # 代碼段部分 main: # indicates start of code (first instruction to execute) # 主程序 # ... # End of program, leave a blank line afterwards to make SPIM happy # 程序結束,留下一個空行之后 ``` ### 數據聲明 ``` name: storage_type value(s) 變量名:(冒號別少了) 數據類型 變量值 ``` * 通常給變量賦一個初始值;對于**.space**,需要指明需要多少大小空間(bytes) ### 實例 ``` example: .data var1: .word 23 # declare storage for var1; initial value is 23                    # 先聲明一個 word 型的變量 var1 = 3; .text __start: lw $t0, var1 # load contents of RAM location into register $t0: $t0 = var1                    # 令寄存器 $t0 = var1 = 3; li $t1, 5 # $t1 = 5 ("load immediate")                    # 令寄存器 $t1 = 5; sw $t1, var1 # store contents of register $t1 into RAM: var1 = $t1                    # 將var1的值修改為$t1中的值: var1 = $t1 = 5; done ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看