問題タブ [att]

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 に答える
857 参照

assembly - 命令の引数の順序

関数 main のアセンブラー コードのダンプ:

mov %rsp,%rbp私は手段を学んだmove the value of rsp to rbp
しかし、私はインテルのアーキテクチャで、それは意味することを知っていたインテルmove the value of rbp to rsp のマニュアル(Intel Architecture Software Developer's Manual. Volume 2. 3-104 MOV命令)によると、mov a, bmove b to a

subの命令は同じです。sub a,b私は手段を知っていたa = a-b。しかし、ここでsub $0x30, %rsp意味するのはrsp = rsp - 0x30

私がどうかしましたか、まずいことでもありましたか?

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

assembly - leal (%eax, %eax) は何をしますか?

何をしleal (%eax, %eax)ますか?かっこがあるので、それは %eax * 2 で内容を乗算しますか?

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

assembly - AT&Tアセンブリで変数を正しく見つける方法は?

アセンブリを使用してブートストラップを作成する練習をしています (AT&T 構文と gnu/gas)。小さなプログラムが組み立てられてリンクされ、仮想ディスクの最初のセクターにコピーされます。BIOS はそれを にロードしますが0000:7c00、ここで問題が発生します。は、実行中に からにcall hello変換されます。しかし、は移転しません。は、まだありません。その結果、画面上で を作成できません。代わりに、ランダムなデータが画面に表示されます。call 0010call 7c10movw $message, %asax00267c26Hello World0000:0026

起動時に正しくするにはどうすればよいですか? いくつかのディレクティブを使用して asm ソース コードを変更する必要がありますか? または、リンク スクリプトを変更する必要がありますか?

ありがとうございました!

次のアセンブルおよびリンク スクリプトを使用します。

0 投票する
2 に答える
4719 参照

assembly - x86 アセンブリの movl、intel-syntax

ちょっとした質問です。アセンブリでこれを行う方法があるかどうかは誰にもわかりますか?

私がやろうとしているのは、基本的に、スタックから次の引数 (固定サイズ) を追加するループを作成することです。

例:

x、y、z、および a をすぐにレジスタにロードする代わりに、最初の 2 つの条件が真であることが確実な場合にのみ、a をレジスタにロードできます。

p/s: その場でコードを書きましたが、実際には何も役に立ちません。

0 投票する
2 に答える
67 参照

c - 「C」は 2 つの異なる値として表示されますか?

アセンブリで2つの異なる文字を比較しようとしています(Cプログラムでアセンブリ関数を呼び出しています)。char の 1 つは構造体に属し、もう 1 つは関数を呼び出すときに渡されます。

gdb でデバッグすると、%ebx は 83 ですが、10(%edi) は 21315 です。それらを文字として出力すると、どちらも「C」に見えます。21315 を 83 に変換する方法はありますか?

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

assembly - GASはレジスタ%ipを認識しません

私の16ビットプログラムでは、GASは次のような指示に呆然としています。

セグメントレジスタの移動は正常に機能するため、これは奇妙だと思います。たとえば、次のようになります。

完全なエラーメッセージは次のとおりです。

エラー:不正なレジスタ名 `%ip '

そして私のバージョン文字列は次のとおりです。

GNUアセンブラ(GNU Binutils)2.22

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

pointers - アセンブリのアスタリスク ポインター (I32 / x86)

問題のある行:

逆アセンブルされたコードの 804a400 の位置に命令はありません (私のリストは 804a247 で終わります)

そのメモリの場所にあるものを確認すると、次のようになります。

この jmp ステートメントは正確に何をしようとしているのでしょうか?

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

pointers - ポインタの値をアセンブリ内の別の新しいポインタにコピーする

更新:コードでstrcpyを使用できます。

x86アセンブリ(att構文)でstrdupの実装を記述し、CのコードをAssemblyのコードに変換しようとしています。

Cのコード:

アセンブリのコード:

コードを実行すると、char*の一部しか返されません。例:「StackOverflow」を渡すと「Stac @@#$$」になります。私はmovlで何か間違ったことをしていると思いますが、実際には何がわかりません。

p / s:私のstrlenはうまくいくと確信しています。

パート2:私が書いたコードは呼び出し元へのポインターを返しますか?後で割り当てたスペースを解放する機能のように。

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

arrays - 2次元配列に値を割り当てるときのガベージ値

私はアセンブリにまったく慣れていませんが、2次元の「配列」に値を割り当てるときに問題が発生しました。私の配列は.space名前が付けられscreenており、が割り当てられてHEIGHT * WIDTH * 4いるため、十分なスペースがあります。

以下のコマンドを実行する前に、配列には値のみが含まれています(以下のコマンドを発行する前に、配列をループしてすべての値をに設定し、すべての値を出力して検証した0ため、これを知っています)。0

これが私がすることです:

そして、これが結果になります(すべての行と列をリストする場合):

私が期待していたのは、screen[0][1]:の変化を見ることだけでしたx:0 y:1 value:20。これらの「ガベージ」値(、、など)の原因は3355443201310720ですか5120

私が言ったように、私は完全な初心者なので、いい人になりましょう!

編集: ゼロフィル関数と配列内のすべての値を一覧表示する関数を提供しています。

編集2:アンドレアスからの入力の後、私はこの関数を作成しました:

編集3 まだ正しくないことがあります。今これを行うとき:

私は(3x3配列)を取得します:

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

assembly - mov %eax,(%esp)

次のステートメントの違いは何ですか?

私はバイナリ爆弾の拡散に取り組んでおり、アセンブリの早い段階でコマンド movとコマンドのいくつかに問題があります。leal