Re: [問題] 組譯錯誤訊息看不太懂

看板ASM作者 (暗黑貴公子)時間15年前 (2008/12/01 08:41), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《Nessa1103 (紫藤茁壯中)》之銘言: : 以下是我的程式,使用MASM和Visual C++撰寫。組譯錯誤訊息說我沒有定義Fbnc : 這個符號(error A2006: undefined symbol : Fbnc),可是我明明在下面定義了 : 啊?請問我該怎麼修改比較好? Fbnc 在呼叫方的下面定義, 所以才會被組譯器視為未定義 同樣原理和處理方式, 高階語言的編譯器亦同 解決方式 1.將 Fbnc 移至呼叫方上方定義 2.在不隸屬任一區段處(.code/.data/.data?/.const) 定義 Fbnc PROTO :DWORD 一行宣告 這樣組譯就會過了 另外, 不太需要自行處理 ebp ... procedure 只要有任何參數 ml 組譯時會自動安插其對應 code (push ebp ... leave) procedure 使用到 USES ml 組譯時會自動安插其對應 code (pop xxx ... leave ret)

11/30 22:44,
謝謝m(_ _)m (膜拜狀)
11/30 22:44

11/30 22:46,
不過那個stdcall是什麼?
11/30 22:46

11/30 23:06,
忽略它沒關係 XDD 我用的是MASM6.11版 所以要加stdcall
11/30 23:06
stdcall 跟 MASM 版本無關, 有無關係要看其版本是否有支援 stdcall 是 PROC/.MODEL 的宣告方式之一, 其名為 langtype 除了 stdcall 外, 尚有 C, SYSCALL, BASIC, FORTRAN, PASCAL 這幾種 langtype C - Leading Underscore, Arguments Right to Left, Caller Stack Cleanup :VARARG Allowed SYSCALL - Arguments Right to Left, :VARARG Allowed STDCALL - Leading Underscore, Arguments Right to Left Caller Stack Cleanup (註解一), :VARARG Allowed BASIC - Capitalize All, Arguments Left to Right, BP Saved FORTRAN - Capitalize All, Arguments Left to Right, BP Saved PASCAL - Capitalize All, Arguments Left to Right, BP Saved 註解一 : 使用 :VARARG, Caller Stack Cleanup 未使用 :VARARG, Called Rotine Must Stack Cleanup -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.168.73

12/11 22:43, , 1F
推+1
12/11 22:43, 1F
文章代碼(AID): #19CpBKyF (ASM)
文章代碼(AID): #19CpBKyF (ASM)