問題タブ [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.
assembly - Y86 アセンブリ - リンクされたリストの合計
私が書いたこのコードが機能しない理由をよりよく理解し、それを修正するのを手伝ってくれる人がいるかどうか疑問に思っていました. 以下は、私が作成した Y86 であり、その中に定義した配列を合計する必要がありますが、プログラムが返すことができるのは、予想される cba ではなく d4a だけです。
皆様、お早めによろしくお願いします!組み立ては理解するのが本当に難しく、人々が時間を割いて私にこれらのことを説明してくれると本当に助かります!
assembly - ループ展開を使用して正、負、およびゼロの数をカウントする最も効率的な方法
次の命令があるとします。数値が正かどうか (負またはゼロ) をチェックし、正の場合はカウンターに 1 を追加します (数値が負かゼロかは気にしません)。これは、単純なループ展開で行うことができます。
私の質問は、ゼロまたは負であることも確認したい場合、どうすれば同じ効率的な構造を得ることができるかということです。この場合、私は 3 つのカウンターを持ちます (1 つは pos 用、もう 1 つは neg 用、もう 1 つは 0 用)。前の例と同じ構造を作ろうとしています (正の数を に%rax
、負の数を に%rbx
、ゼロをに格納しています%rcx
):
assembly - y86 プログラムで ADR エラーが発生しましたが、その理由がわかりません。スタックは適切に設定されているようです
リンクされたリストの値を合計することになっている CMU の Architecture lab からの次の y86-64 プログラムがあります。
プログラムは、行である行のステータス"ADR"
で停止します0x093
"ADR"
さて、エラーはプログラムがより高いアドレスにアクセスしようとしていることを意味するというドキュメントを信じるようになりましたが、0xFFF
そうではありません。スタックも初期化され、正しく設定されているようです。私が書いた他のいくつかのプログラムと同じ方法を使用しましたが、うまくいきました。ここで何が問題なのかよくわかりません。
assembly - Y86 コード - rax を返さない、または表示しない
私はCコードを取り、それをx86-64アセンブリに変換してからY86に変更するクラスプロジェクトを行っています。これで、リンクされたリスト内の要素の合計を rax に返すことを想定しています。しかし、y86 コンパイラを使用しようとすると、表示されません。私が作ったy86はこんな感じです。
したがってrax
、0xfed が必要ですが、私の結果では何も表示されません。
これは私が取得したCコードです:
assembly - y86 ループの展開
y86 コードでループを展開しようとしていますが、テスト プログラムを実行しようとすると、2 つの異なる値が返されます。reg。コードは次のとおりです。
そして、私が作成した展開版は次のとおりです。
取得する必要がある結果は 2 ですが、アンロールされた結果から返される結果は 3 を返します。余分な処理iaddq
が実行されていることはわかっていますが、どこにあるのかわかりません。代わりに 2 つの値をチェックするように、ループを 2 回展開しました。
assembly - Y86を理解する
次のコードがあります。誰かが私が括弧内に持っている質問を説明してもらえますか?
c - C ~ Y86 アセンブリ
これを y86 アセンブリに変換するために、このコードを理解しようとしています。カッコ内の質問に誰か答えてください。
サンプル入力