問題タブ [multiplestacks]

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

c++ - C++ でのスタックの切り替え

私は、Borland C++ を使用して、longjmps を使用して複数のスタックを切り替える、16 ビット用の C で書かれた古いコードをいくつか持っています。malloc を実行して新しいスタックを作成し、インライン アセンブラを使用して、malloc された領域のアドレスのセグメントとオフセットに SS および SP レジスタを設定します。Win32 に変換したいのですが、2 つの命令を ESP を設定する 1 つの命令に置き換える必要があるようです。2 つの命令は CLI/STI のペアで囲まれていましたが、Win32 ではこれらは「特権命令」を与えるため、ここでは省略しています。私は Windows に関してはまったく無知なので、最初のテスト ケースが機能したことにかなり驚きました。ですから、私のやや漠然とした質問は、私がやっていることは a) 危険すぎて続行できないのか、b) コードを追加すればうまくいくのか、ここの専門家に尋ねることです。特定の予防策を講じるなど?後者の場合、何を追加する必要があり、それについてどこで確認できますか? SS、EBX など、他のレジスタについて心配する必要はありますか? 私は使っている最適化はありません...人々が私に与えることができるヒントをありがとう。

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

gdb - gdb 6.3 で複数のスタックを切り替える

プログラムには 2 つのスタックがあります。1 つは OS によって作成され、2 つ目はコードを実行するためにプログラム自体によって作成されます。

2 番目のスタックでプログラムがクラッシュした場合、gdb のメイン スタックに切り替えて、バックトレースを確認したいと考えています。出来ますか?

rsp を変数に保存し、クラッシュ後に変更しようとしましたが、結果のバックトレースは正しくありませんでした。gdb はスタック内のフレームを区別できないと思います。