私は個人的なプロジェクトとして MIPS プロセッサを設計していますが、今では非常に混乱した質問に遭遇しました。MIPSでsigned-extendをいつ使用し、いつzero-extendを使用するかを要約することはできません。
私は多くのリソースを検索しましたが、主に次のように述べています。
1) ADDI、ADDIU は両方とも符号付き拡張を使用します。
2) ANDI、ORI、XORI は両方ともゼロ拡張を使用します。
ただし、これらの 2 つの命令では、混乱し始めています。
SLTIU/SLTI
Imagination の「MIPS Architecture for Programmers Volume II-A: The MIPS instruction set Manual」ページ 368 には、次のように記載されています。
16ビットの即値は符号付き拡張であると明確に述べられていますが、次のステートメントがわかりません。
[0, 32767] または符号なし範囲の最大 [max_unsigned-32767, max_unsigned] の終わり。
また、次のように、16 ビットの即値はゼロ拡張であると言う人もいます。
さて、MIPS における符号付き命令と符号なし命令の正確な違いを説明できる人はいますか?