首先我承認我想問3個問題

用的BCB6
1.如標題,雖然不保存暫存器測驗沒出錯,但是不敢保證在其它系統下沒問題
2.調戲DLL時,好像會更改主程式的當前目錄,這樣主程式要讀取真實當前目錄下的檔案就會出錯,能不能解決,復制DLL專案到主程式目錄下的辦法就算了
3.BCB的調戲符號檔案是哪個,這樣把它復制到主程式目錄下或許可以用OD進行類似IDE的原始碼級調戲
uj5u.com熱心網友回復:
問題1,像eax,ebx這樣的暫存器,可以不用保存,其他,看你代碼是否用到,用到前最好先push,結束前還原一下問題2,除錯DLL,你可以dll的匯出路徑設定為主程式目錄,這樣就可以了
問題3,要用其他工具除錯,最好先在代碼里,置入指令標記,比如,xor eax,eax;沒用指令多放幾個,然后在od搜一下就很容易找到,并下斷點
uj5u.com熱心網友回復:
謝謝,第二個問題解決了第三個問題,還是希望能很好解決
至于第一個問題,看了下匯編代碼,自動保存了ebx,esi,edi三個暫存器,不過接下來有點看不明白了
第一句代碼初始一個區域變數,對應的匯編是
xor edx,edx
mov 區域變數,edx
這太強大了,沒保存直接用了
uj5u.com熱心網友回復:
很多人總以為組合語言即是機器語言...其實 CPU 運行的指令也是經過包裝過的......各式編譯器所編譯的結果是有其出錯率的...這是程式員必須知道的常識......
uj5u.com熱心網友回復:
xor edx,edx 《==》mov edx,0
mov 區域變數,edx
這太強大了,沒保存直接用了
《==》
C 的
區域變數 =0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/124387.html
標籤:基礎類
上一篇:求教!!!老師提出的實驗題:程式預處理:去除關鍵字(int...);Tokenization(去除標點符號,數字等)....
下一篇:請問BCB 2010中用ole container在TForm里顯示ppt后,怎么進入編輯狀態,或者能展示所有頁的內容?
