2

私はこの質問に答えることになっています。いくつかの調査の結果、 add と sub は同じオペコードを持ち、機能分野のみが異なると言われています。これは答えですか、それとも何か他のものですか?

アップデート

これは、Nios II CPU マニュアルで入手できます。

subi
subtract immediate
Operation: rB ← rA – σ (IMMED)
Assembler Syntax: subi rB, rA, IMMED
Example: subi r8, r8, 4
Description: Sign-extends the immediate value IMMED to 32 bits, subtracts it from the value of rA and then
            stores the result in rB.
Usage: The maximum allowed value of IMMED is 32768. The minimum allowed value is
–32767.
Pseudo-instruction:
© March 2009
subi is implemented as addi rB, rA, -IMMED
4

3 に答える 3

10

MIPSに適切な命令subiあることさえ知りません(一部の環境ではそのためのマクロが実装されている場合があります)。

即値を減算しているので、その否定をaddi命令に提供するだけです。

addi $r1, $r2, -42     ; equivalent to subi $r1, $r2, 42

即値オペランドは 2 の補数値です。つまり、負の数になる可能性が完全にあり、2 の補数が機能する方法は、負の数を符号なしで加算でき、減算と同じ結果が得られることを意味します (ラップアラウンドするため) )。

たとえば、-4216 ビットの 2 の補数は符号なしの値65494です。65536 で追加50してラップすると、次のようになります。65494

     50
+ 65494 (ie, -42)
  -----
  65544 (overflow, so
- 65536  we wrap at 64K)
  -----
      8 (identical to "50 - 42")
于 2012-08-16T06:27:33.357 に答える