看板 ASM 關於我們 聯絡資訊
※ 引述《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)
Nessa1103:謝謝m(_ _)m (膜拜狀) 11/30 22:44
Nessa1103:不過那個stdcall是什麼? 11/30 22:46
R119:忽略它沒關係 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
zha0:推+1 12/11 22:43