問題タブ [instruction-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1379 参照

assembly - MIPS 命令デコード

MIPS バイナリ命令をデコードする方法を理解しようとしています。

gcc を使用して Debian MIPS システムで C 言語で hello world プログラムをコンパイルし、objdump を実行すると、.text セクションの最初の命令は次のようになります。

600: 03e00025 move zero,ra

MOVEこれが命令であるとどのように判断するのかわかりません。

03e0002500000011111000000000000000100101バイナリです。私が正しく理解している場合、ここの最初の 6 ビットはオペコードであり、この場合はすべて 0 であり、R タイプの命令であることを意味するため、最後の 6 ビットを調べる必要があり100101ます。MIPS Instruction Set Manualを見ると、これが命令であるように見えますORMOVE私はそのマニュアルでさえ見つけることができません。

これをグーグルで調べたところ、明らかにアセンブリに「疑似」命令があり、おそらく にmove $t, $s展開されていることがわかりましたaddiu $t, $s, 0が、マニュアルを見るとADDIUopcode があり001001ます。私が見つけた別の結果は、それがに変換されると主張してADDいますが、の最後の6ビットは であるADD必要が100000あるため、どちらにも適合しません。

私は何が欠けていますか?