0

この MIPS プログラムに対する私のコメントは、各ステートメント行が何を行っているかを正確に説明していますか?

.data
str1: .asciiz "Enter the first integer: "
str2: .asciiz "Enter the second integer: "
str3: .asciiz "The sum is "
newline: .asciiz "\n"

.text       # instructions follow this line 
main:   # indicates start of code (first instruction to execute)

addi $v0, $zero, 4 
  # adds zero and imm value 4 and stores in 32-bit function result registers

la $a0, str1 
  #load system register $a0, with the address of the string to be output
syscall

addi $v0, $zero, 5
   # adds zero and imm value 5 and stores in 32-bit function result registers
syscall
add $s0, $zero, $v0
   #adds 0 and value in $v0 and stores in $s0
addi $v0, $zero, 4
   # adds zero and imm value 4 and stores in 32-bit function result registers
la $a0, str2
   #load system register $a0, with the address of the string to be output
syscall

addi $v0, $zero, 5
   # adds zero and imm value 5 and stores in 32-bit function result registers
syscall 
add $s1, $zero, $v0
   #adds 0 and value in $v0 and stores in $s1
add $s2, $s0, $s1
   # adds value in $s0 and value in $s1 and stores in $s2
addi $v0, $zero, 4
   # adds zero and imm value 4 and stores in 32-bit function result registers
la $a0, str3
   # load system register $a0, with the address of the string to be output
syscall

addi $v0, $zero, 1
   # adds zero and imm value 1 and stores in 32-bit function result registers
add $a0, $zero, $s2
   # adds value in $s2 and 0 and stores in system register $a0
syscall

addi $v0, $zero, 4
   # adds zero and imm value 4 and stores in 32-bit function result registers
la $a0, newline
   # load system register $a0, with the address of the string to be output
syscall

addi $v0, $zero, 10
   # adds zero and imm value 10 and stores in 32-bit function result registers
syscall
jr  $ra  
   # jump to address contained in $ra

オンラインでさまざまなコメントを見たので、システムコールは何をしますか? また、このプログラムを変更して、最初の整数と 2 番目の整数の時間を出力するようにするにはどうすればよいでしょうか? 例: 1 回目: 2、2 回目: 5 なので、2 を 5 回印刷します。

4

1 に答える 1

1

一般syscallに、MIPS の命令は、オペレーティング システムによって処理される例外を引き起こします。どの OS が機能するかは、使用する OS と特定の ABI によって異なります。通常、ユーザーは特定のレジスター (使用中の規則/ABI によって決定される) でいくつかのパラメーターをセットアップし、ユーザーに代わっていくつかの「特権」操作を実行します。

コードが実行される環境の詳細を提供しなかったことを考えると、どの特定のパラメーター受け渡し規則が使用されているか、OS (またはシミュレーター) が渡している特定のパラメーターに対して何をするかはわかりません。

于 2014-03-13T22:48:26.503 に答える