場所 0x00000004 の読み取りでアクセス違反が発生しました。
2022-02-10 05:02:58
最近、x86のアセンブリを書くときにこの問題があって、時間がかかりましたが、最終的には完璧に解決しました。
原因は以下のコードでした。
.MODEL FLAT, C
.CODE
testcommon PROC
push ebp
mov ebp, esp
mov eax, [ebp+8] ;base address
mov esi, [ebp+12] ;length
mov ecx, 0 ; loop variable
begin:
cmp ecx, esi
je done
mov dword ptr [eax+ecx*4], 4
add ecx, 1
jmp begin
done:
mov esp, ebp
pop ebp
testcommon
testcommon ENDP
END
メイン関数に戻ると必ずエラーメッセージが表示される
Access violation reading location 0x00000004.
一歩一歩情報を探していくうちに、プログラムが呼び出されている仕様に準拠していないことが判明する。
つまり、呼び出されたプログラムはEBX, EDX, ESIレジスタを保護する責任がありますが、上記のプログラムではESIレジスタを保護せずに直接使用するため、呼び出し元の関数に戻った後の動作がおかしくなります。
取得元:https://www.cnblogs.com/buaawang/p/9853768.html
関連
-
発生: collect2 の原因の 1 つ: error: ld returned 1 exit status
-
'node' は内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
Java Exceptionが発生しました
-
統合マネージドパイプラインモードで適用されないASP.NETの設定が検出されました。
-
[例外処理1】ブートレイヤーの初期化でエラーが発生した
-
エラー: 非静的メンバ関数の無効な使用
-
AWS S3 CLI のパーミッションのバグ
-
AndroidXへの移行-今まで遭遇したこと、これから遭遇すること、ここにあり
-
SQLステートメント共通エラー。"不明な列 'xxx' in 'where 節 "どのように解決するには?
-
エラーの解決策 xmlのこの行に複数のアノテーションが見つかりました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オリジン "http://127.0.0.1:8080 "のフレームがクロスオリジンフレームにアクセスするのをブロックした。解決済み
-
Python update pip error: EnvironmentErrorのため、パッケージをインストールできませんでした。[WinError 5] アクセスが拒否されました
-
NoClassDefFoundError: org/hamcrest/SelfDescribing JUnit-4.11でエラー。
-
Uncaught TypeError: box1.appendChild は関数ではありません。
-
zsh: コマンドが見つかりません 解決策
-
vue startup error throw er; // 処理されない 'エラー' イベント
-
R言語ファイル読み込みエラー
-
python problem: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position
-
エラーです。未解決のコンパイル問題の解決
-
STM32でのビットバンド動作