2

アセンブリ言語で、CSそして両方を強制的に変更するにはどうすればよいですか?IP

ORGディレクティブを使用して、の数を変更できますIPが、どのように変更しCSますか?

基本的に、アセンブリを使用してマルチスレッドを実装したいと思います。

スタックオーバーフローの質問を含む多くのフォーラムは不可能だと言っていますが、アセンブリコードから作成されている場合でも、Cにはどのようにマルチスレッドオプションがありますか?

4

4 に答える 4

7

変更するには、必要に応じて(eg. ) または long (eg. )cs:ipでロング ジャンプします。linkおよびlinkで使用できるアドレッシング モードはいくつかあります。マルチスレッドを実装することは、単純に変更することとはまったく別の問題です。jmpjmp segment:offsetcallcall segment:offsetjmp call cs:ip

于 2012-09-17T19:11:03.163 に答える
3

私はあなたがちょうど使用できると思います

jmp segment:offset

call segment:offset
于 2012-09-17T19:11:09.400 に答える
1

CS または EIP レジスタを変更できるのは、far コントロール転送命令 (jmp、call、ret) だけです。CSレジスタはリアルモードでしか変更できないと思います。

RET は基本的に ESP (スタック ポインター) で値を取得し、それを IP/EIP にプッシュします。次に、ESP は 8 に即時オフセット (存在する場合) を加えた値だけインクリメントされます。

于 2012-12-27T21:57:09.523 に答える