nasm彙編以及bochs除錯
先說下編譯的命令:
編譯:
nasm -f elf hello.asm -o hello.o
加許可權:
chmod +x hello.o
連結:
ld -m elf_i386 -s -o hello hello.o
直接執行就可以了。
bochs下除錯com檔案方法:
方法一:在你的程式 LABEL_BEGIN後面緊接著寫一個jmp $(讓程式碼死迴圈在這個位置),然後編譯為com檔案。寫入虛擬軟盤。
之後啟動除錯模式的bochs,先不要設定任何斷點,直接執行到dos介面。然後在dos中執行你的程式,出現假死狀態(必然的,程式一開始就會死迴圈)。
然後切換到bochs的命令列視窗,估計需要先按ctrl+c,然後輸入r命令,察看當前eip暫存器的值。例如當前值為0x124,那麼就輸入下面的命令,set \$eip=0x126,就是讓EIP增大2即可,JMP \$的機器碼要佔這麼個大小。之後,就可以單步跟蹤執行了
方法二:先在bochs的配置檔案中加入一句話”magic_break: enabled=1”,這句話的作用就是bochs啟動時開啟魔術斷點除錯功能,然後在程式開始處新增一句xchg bx,bx。
將com檔案複製到虛擬軟盤pm.img中,啟動bochs在freedos中執行com檔案,當執行到xchg bx,bx指令時就會自動斷到Bochsdbg裡。
bochs除錯參考bochs 除錯 com 檔案。
相關文章
- nasm彙編ASM
- C與彙編(NASM) (1)ASM
- NASM 與 GDB 簡易除錯指南ASM除錯
- MacOs 下除錯 8086 彙編Mac除錯
- Xcode Debug除錯彙總XCode除錯
- 玩好.NET高階除錯,你也要會寫點彙編高階除錯
- 除錯時檢視彙編和暫存器資料等除錯
- 自己動手從零寫桌面作業系統GrapeOS系列教程——10.NASM彙編作業系統ASM
- JavaScript 除錯常見報錯以及原因JavaScript除錯
- 移動端除錯方法彙總除錯
- 前端Chrome除錯技巧最全彙總前端Chrome除錯
- this問題 以及 webstorm 除錯介面WebORM除錯
- Intel彙編 ld連結錯誤Intel
- vscode+C 編譯除錯VSCode編譯除錯
- C編譯: 使用gdb除錯編譯除錯
- vs整合nasmASM
- 安裝FreeIPA以及應用時報錯彙總
- # Xcode 編譯器除錯命令(所有)XCode編譯除錯
- IOS動態除錯彙總-傻瓜版教程iOS除錯
- ARM彙編解決階乘以及大小寫轉換
- linux啟動bochsLinux
- 編譯除錯Net6原始碼編譯除錯原始碼
- 彙編
- 視訊更新:程式碼分析8之單步除錯ARM64啟動彙編與重定位除錯
- 除錯篇——除錯物件與除錯事件除錯物件事件
- Android 你不知道的除錯技巧(Debug操作彙總)Android除錯
- 編譯修改*火GPS除錯助手(開源)編譯除錯
- Android Studio中編譯除錯Launcher3Android編譯除錯
- 利用VS2017編譯、除錯Linux程式編譯除錯Linux
- Idea除錯Rocketmq原始碼編譯執行Idea除錯MQ原始碼編譯
- Ubuntu中用VScode編譯除錯C\C++UbuntuVSCode編譯除錯C++
- 彙編命令A
- IjkPlayer. 可編譯及動態除錯native編譯除錯
- Spark原始碼編譯與匯入IDEA除錯Spark原始碼編譯Idea除錯
- 用GPT-4除錯 用Claude 3編碼GPT除錯
- 【譯】使用可編輯表示式改進除錯除錯
- Windows windbg kernel debug 雙機核心除錯 - USB3.0 除錯 USB除錯 除錯線Windows除錯
- C語言轉寫成MIPS指令集彙編以及MIPS指令集彙編中函式呼叫時棧的變化C語言函式
- cesium原始碼編譯除錯及呼叫全過程原始碼編譯除錯