Win32エントリポイントはレジスタ値(呼び出し先が保存したレジスタ)を保持する必要がありますか?

user8426277

NASMでプログラムを作成していますが、それをCRTにリンクしたくないので、エントリポイント(Win32エントリポイント)を指定します。これはプログラムのソースコードです:

global _myEntryPoint

section .text
_myEntryPoint:
    mov eax, 12345

これがWin32エントリポイントについて私が知っていることです(間違っている場合は訂正してください):

  • Win32エントリポイントは、通常の関数のように値を返しません(Win32エントリポイントを終了するには、呼び出す必要がありますExitProcess())。
  • Win32エントリポイントは引数を取りません。

今私が知らないのは次のとおりです。

  • Win32エントリポイントはレジスタ値(呼び出し先が保存したレジスタ)を保持する必要がありますか?Win32エントリポイントが終了すると、プロセスが終了し、一部のレジスタ値が保持されることを期待する関数に実行が戻らないため、答えは「いいえ」だと思います
ハリー・ジョンストン

提案された複製に対する私の回答で説明したように Win32エントリポイントから戻るべきではありません。その場合、レジスタを保持する必要はありません。あなたの質問の言い方は漠然とあなたが電話をかける前にレジスターを復元する必要があるのではないかと心配していたことを示唆していますがExitProcess、これは間違いなくそうではありません。呼び出しExitProcessてもエントリポイントから戻ることはなく、コードの実行を停止するだけです更新については、こちらも参照してくださいこれも興味深い場合があります。)

そのアドバイスを無視して、とにかくエントリポイントから戻ったとしても、実際には答えは同じです。実際にレジスタを保存する必要はありません。私の知る限り、この動作は文書化されていません。したがって、注意が必要な場合は、stdcall規則に厳密に従うことを選択できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

料理にはレストランへのポインタがあり、レストランにはジオポイントがあります。距離でソートされた料理をクエリしますか?

分類Dev

デストラクタを手動で呼び出すと、エラーが発生します。式は完全なオブジェクトタイプへのポインタである必要があります

分類Dev

「WebページのApplicationInsights」テレメトリ呼び出しのプロキシエンポイントを作成する必要があります(Azure Function ProxyがCORSオプションの呼び出しに失敗します)

分類Dev

サーブレットへのすべてのdoGet / doPost呼び出しに対して共有Gsonオブジェクトをインスタンス化する必要がありますか?

分類Dev

DTMは、カスタムリンクとページ呼び出しに異なるレポートスイートを提供しますか?

分類Dev

サービスアドレスが更新されたときに自動スクリプトを呼び出しますか(WOオブジェクトの起動ポイントがありますか?)

分類Dev

私はREACTを初めて使用します。ボタンをクリックすると、別のファイルからソートクラスコンポーネント内にある関数resetArrayを呼び出す必要があります。

分類Dev

コンテキストを切り替えると、Golangはなぜ%rsp、%rip、および%rbp(他の呼び出し先に保存されたレジスタはない)のみを保存するのですか?

分類Dev

laravelリポジトリ-リポジトリファイルを直接呼び出すのではなく、インターフェイスを呼び出す必要があるのはなぜですか?

分類Dev

呼び出しスレッドは、ライブチャートを使用する多くのUIコンポーネントで必要になるため、STAスレッドである必要があります。

分類Dev

呼び出し先が保存したレジスタを正しく復元する

分類Dev

Azure関数を呼び出してスノーフレークのプロシージャを呼び出してデータをロードすると、消費プランでタイムアウトが発生しますが、これを実現する別の方法はありますか?

分類Dev

インクルードの場合、ビューは呼び出し可能またはリスト/タプルである必要があります

分類Dev

TravisAPI呼び出しを介してリポジトリプルリクエストのTravisCIテスト統計を表示する必要があります

分類Dev

多くのUIコンポーネントがこれを必要とし、WPFのメイン関数で発生するため、呼び出しスレッドはSTAである必要があります

分類Dev

識別子(CELLNAME)に登録された無効なペン先-ペン先には、UITableViewCellインスタンスである必要があるトップレベルオブジェクトが1つだけ含まれている必要があります

分類Dev

Angular 11にアップグレードした後、「inject()をインジェクションコンテキストから呼び出す必要があります」を取得する

分類Dev

Solidity:別のコントラクトの関数を呼び出すときにエラーが発生しました。エラー:値を送信するときにコンストラクターが支払われる必要があります

分類Dev

API呼び出しからサービスを介してコンポーネントに返されるデータはオブジェクトであり、Angularの配列である必要があるようです

分類Dev

Angular 2のサービスは、データ操作ロジックまたはコンポーネントを保持する必要がありますか?

分類Dev

redux-sagaのユニットテストでエラーが発生します:runSagaをイテレータで呼び出す必要があります

分類Dev

cronジョブからbashスクリプトを実行すると、「/ bin / bash ^ M:不正なインタプリタ:そのようなファイルまたはディレクトリはありません」エラーが発生します

分類Dev

すべてのイナーシャリクエストは有効なイナーシャレスポンスを受信する必要がありますが、プレーンなJSONレスポンスが受信されました

分類Dev

オブジェクトをインスタンス化する方法、またはsetterを呼び出して、java8 Labmdasとスレッドプールを使用して異なるスレッドから値を渡す方法は?

分類Dev

推定されるコンテキストのプロパティを保持しながら、エイリアステンプレートをテンプレートテンプレートパラメータに推定する方法はありますか?

分類Dev

String を取るように定義されたコンストラクターですが、メソッド呼び出しはエラー「配列タイプが必要です java.lang.String が見つかりました」を表示します

分類Dev

レジスタ値をパラメータとしてブレークポイントで外部スクリプトを呼び出す

分類Dev

エンティティタイプ「アクセス」では、主キーを定義する必要があります。キーレスエンティティタイプを使用する場合は、「HasNoKey()」を呼び出します。

分類Dev

リクエストごとに新しいインスタンスを作成する必要がありますか?

Related 関連記事

  1. 1

    料理にはレストランへのポインタがあり、レストランにはジオポイントがあります。距離でソートされた料理をクエリしますか?

  2. 2

    デストラクタを手動で呼び出すと、エラーが発生します。式は完全なオブジェクトタイプへのポインタである必要があります

  3. 3

    「WebページのApplicationInsights」テレメトリ呼び出しのプロキシエンポイントを作成する必要があります(Azure Function ProxyがCORSオプションの呼び出しに失敗します)

  4. 4

    サーブレットへのすべてのdoGet / doPost呼び出しに対して共有Gsonオブジェクトをインスタンス化する必要がありますか?

  5. 5

    DTMは、カスタムリンクとページ呼び出しに異なるレポートスイートを提供しますか?

  6. 6

    サービスアドレスが更新されたときに自動スクリプトを呼び出しますか(WOオブジェクトの起動ポイントがありますか?)

  7. 7

    私はREACTを初めて使用します。ボタンをクリックすると、別のファイルからソートクラスコンポーネント内にある関数resetArrayを呼び出す必要があります。

  8. 8

    コンテキストを切り替えると、Golangはなぜ%rsp、%rip、および%rbp(他の呼び出し先に保存されたレジスタはない)のみを保存するのですか?

  9. 9

    laravelリポジトリ-リポジトリファイルを直接呼び出すのではなく、インターフェイスを呼び出す必要があるのはなぜですか?

  10. 10

    呼び出しスレッドは、ライブチャートを使用する多くのUIコンポーネントで必要になるため、STAスレッドである必要があります。

  11. 11

    呼び出し先が保存したレジスタを正しく復元する

  12. 12

    Azure関数を呼び出してスノーフレークのプロシージャを呼び出してデータをロードすると、消費プランでタイムアウトが発生しますが、これを実現する別の方法はありますか?

  13. 13

    インクルードの場合、ビューは呼び出し可能またはリスト/タプルである必要があります

  14. 14

    TravisAPI呼び出しを介してリポジトリプルリクエストのTravisCIテスト統計を表示する必要があります

  15. 15

    多くのUIコンポーネントがこれを必要とし、WPFのメイン関数で発生するため、呼び出しスレッドはSTAである必要があります

  16. 16

    識別子(CELLNAME)に登録された無効なペン先-ペン先には、UITableViewCellインスタンスである必要があるトップレベルオブジェクトが1つだけ含まれている必要があります

  17. 17

    Angular 11にアップグレードした後、「inject()をインジェクションコンテキストから呼び出す必要があります」を取得する

  18. 18

    Solidity:別のコントラクトの関数を呼び出すときにエラーが発生しました。エラー:値を送信するときにコンストラクターが支払われる必要があります

  19. 19

    API呼び出しからサービスを介してコンポーネントに返されるデータはオブジェクトであり、Angularの配列である必要があるようです

  20. 20

    Angular 2のサービスは、データ操作ロジックまたはコンポーネントを保持する必要がありますか?

  21. 21

    redux-sagaのユニットテストでエラーが発生します:runSagaをイテレータで呼び出す必要があります

  22. 22

    cronジョブからbashスクリプトを実行すると、「/ bin / bash ^ M:不正なインタプリタ:そのようなファイルまたはディレクトリはありません」エラーが発生します

  23. 23

    すべてのイナーシャリクエストは有効なイナーシャレスポンスを受信する必要がありますが、プレーンなJSONレスポンスが受信されました

  24. 24

    オブジェクトをインスタンス化する方法、またはsetterを呼び出して、java8 Labmdasとスレッドプールを使用して異なるスレッドから値を渡す方法は?

  25. 25

    推定されるコンテキストのプロパティを保持しながら、エイリアステンプレートをテンプレートテンプレートパラメータに推定する方法はありますか?

  26. 26

    String を取るように定義されたコンストラクターですが、メソッド呼び出しはエラー「配列タイプが必要です java.lang.String が見つかりました」を表示します

  27. 27

    レジスタ値をパラメータとしてブレークポイントで外部スクリプトを呼び出す

  28. 28

    エンティティタイプ「アクセス」では、主キーを定義する必要があります。キーレスエンティティタイプを使用する場合は、「HasNoKey()」を呼び出します。

  29. 29

    リクエストごとに新しいインスタンスを作成する必要がありますか?

ホットタグ

アーカイブ