addi
16 進数の即値が使用されている場合、アセンブリで命令 (およびその他) を解釈する方法に関する標準または推奨事項はありますか?
例:
addi $t0, $zero, 0xffff
これは、プロセッサによって行われるように、符号が に拡張されるのと同じ意味になると予想していましaddi $t0, $zero, -1
たが、火星シミュレータのアセンブラが 16 進数を 32 ビットの符号なし数値として解釈し、疑似数値として実行しようとするという事実に驚きました。命令 (疑似命令が有効な場合)。0xffff
0xffffffff
addi $t0, $zero, 0x0000ffff
明確にするために、MARS のアセンブラーはそのaddi $t0, $zero, 0xffff
疑似命令を複数のマシン命令にアセンブルし、疑似命令が有効になっている場合は、その定数 (65535 = 0xffff) をレジスタに作成し、それを追加します。MARS のシミュレーターは( ) のような命令を正しくシミュレートします。0x2008ffff
addi $t0, $zero, -1
SPIM アセンブラは、エラーで中断します。
私が知りたいのは、アセンブラーが常にこのように解釈するかどうか、および何も見つからないので、これが記述または説明されている場所があるかどうかです。