問題タブ [y86]

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 投票する
2 に答える
350 参照

assembly - xorq、andq、addq、iaddq、および subq のみを使用して算術右シフトを実行する方法はありますか?

私は、これらの操作 (Y86) しかない架空のアーキテクチャにいます。算術右シフトは存在しません。私は基本的に、数値が負かどうかを判断するために最上位ビットをキャプチャしようとしています。負の場合は結果レジスタ rax に追加します。

編集:

申し訳ありませんが、指定するのを忘れていました。条件分岐を避けて、効率が向上するかどうかを確認しようとしています。私が使用しているバージョンには cmov が存在しません。

私が得た最も遠いものは次のとおりです。

ただし、結果が 0 の場合、これは機能しません。

0 投票する
0 に答える
134 参照

assembly - Y86 では、関数パラメータが 6 つを超えるとどうなりますか?

c の次の関数を考えてみましょう: long arithEx(long, long, long, long, long, long, long, long);

X-86 では、アセンブリ コードは次のようになります。

X-86 と Y-86 には関数の引数を受け取るレジスタが 6 つしかないので、これは理にかなっています。また、X-86 の場合、即時メモリ アドレッシング モードをサポートしているため、残りのパラメータをメモリに保存するだけで済みます。

ただし、Y-86 の場合、即値をメモリに移動できる命令がないため、残りのパラメーターはどこに移動する必要がありますか?