問題タブ [stack-pointer]

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

assembly - スタックポインタが指しているx86?

たとえば、斧を押した場合、[SP] は斧の値または斧の後の単語を指しますか? また、リアルモードとプロテクトモードの違いはありますか? これは、Art of assembly book が、sp が最後にプッシュされたデータを指すように説明および説明しているためです

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

assembly - pushl / popl%espのアセンブリレベルの表現とは何ですか?

スタックポインタレジスタをプッシュおよびポップする動作を理解しようとしています。AT&Tの場合:

計算された値をに戻すことに注意してください%esp

私はこれらの指示を順番にではなく、独立して検討しています。に格納されている値%espは常にインクリメント/デクリメント前の値であることを知っていますが、アセンブリ言語で動作をどのように表すことができますか?これは私がこれまでに思いついたものです。

pushl %esp(FLAGSと一時レジスタへの影響を無視して):

の場合popl %esp

これは正しいです?そうでない場合、どこが間違っているのですか?

0 投票する
4 に答える
818 参照

x86 - スタック ポインタ レジスタはどのように機能しますか

さて、スタックはどのように機能しますか?たとえば、命令:

に等しい:

ここで、sp はスタック ポインタです。そうですか?

私の質問は、sp レジスタから 4 を減算するポイントは何ですか?

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

c++ - ブースト例外により、スタック ポインターが破損する (実行時チェックの失敗 #0 ...)

小さなプロジェクトで、いくつかのブースト パッケージ (asio、property_tree、filesystem など) を使用していますが、ブースト パッケージのどこかで例外がスローされるまで、すべてが正常に機能することに注意する必要がありました。これらすべてのパッケージで発生しますが、次の最小限のプログラムに要約することができました。

例外は正常にスローされますが、プログラムが終了すると取得されます

私はこれをデバッグしようとしました (私はビジュアル スタジオ 2010 Express でブースト 1.49.0 を使用し、crt を静的にリンクしています)、すべての可視コードが既に実行されている場合に問題が発生します。std:exception デストラクタが通過しなかったことがわかりますが、その後 (プログラムの return ステートメントの "in" で) メッセージ ボックスがトリガーされます。

編集:いくつかの追加情報:

  • 上記の最小限のプログラムでは、boost はヘッダーのみを使用しています
  • 他の lib ファイルは関係ありません
  • プログラムによって読み込まれるのは、ntdll.dll と kernel32.dll だけです。
  • 追加のスレッドは作成されていません
  • CRTに対して動的にリンクすると、問題も発生します

EDIT2:再び詳細情報:

  • 上記のプログラムに追加されたインクルード
  • 代わりに runtime_error をスローすると、問題も発生します
  • (...) または (std::exception) で例外をキャッチすると、問題は解決します
  • 例外を再スローすると、問題は解決したままです
0 投票する
2 に答える
9766 参照

assembly - x64 アセンブリでのスタックの配置

28hから減算される (10 進数 40)の値はrsp、次のように計算されます。

から: http://www.japheth.de/JWasm/Win64_1.html

私の理解では、20h使用している各値は 8 バイトから 4 であるため、減算するだけで済みます20h。では、なぜ が28h減算され、それがどのようにして 16 バイトのアラインメントになるのでしょうか?

引数が 4 つ未満の関数にはスタック領域の予約が必要ですか?も参照してください。

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

x86 - スタックから値を POP できますが、NASM アセンブリのどこにも配置できませんか?

NASM アセンブリ、Ubuntu、32 ビット プログラム。

通常、スタックから値をポップするときは、

レジスタまたは変数に。しかし、スタック内の次の要素を取り除きたいだけで、どこにも置きたくない場合もあります。やっている

うまくいかないのと同じように。

私が持っていた回避策は、まったく使用しない 4 バイトの変数を作成し、それにダンプするPOPことでした。これを達成するためのより良い方法はありますか?

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

assembly - スタックのバランスをとる

このようにスタックをセットアップすると

する必要がありますか

またはのみ

?