半個月沒有學習Win32匯編了,調(diào)試能力弱了不少。
一段代碼居然死活編譯不通過,報錯: error A2022: instruction operands must be the same size
在網(wǎng)上搜得這一篇好文,收藏之。
ml.exe錯誤信息
FATAL 嚴重錯誤
cannot open file 不能打開文件
I/O error closing file I/O錯誤 正在關(guān)閉文件
I/O error writing file I/O錯誤 正在寫文件
I/O error reading file I/O錯誤 正在讀取文件
out of memory 缺少內(nèi)存
assembler limit : macro parameter name table full 匯編限制:宏參數(shù)名表已滿
invalid command-line option 無效命令行參數(shù)
nesting level too deep 嵌套過深
unmatched macro nesting 不正確的宏嵌套
line too long 行太長
unmatched block nesting 不正確的區(qū)、段嵌套
directive must be in control block 指令必須在控制段
error count exceeds 100; stopping assembly 錯誤數(shù)超過100,停止匯編
invalid numerical command-line argument 無效命令行參數(shù)
too many arguments 太多參數(shù)、定義、沖突
statement too complex 聲明太復雜
Internal Assembler Error 內(nèi)部匯編錯誤
missing source filename 找不到源文件名
COFF error writing file COFF錯誤,正在寫文件
invalid debug and browser data; file exceeds line limit 不能排除故障和瀏覽數(shù)據(jù);文件超過行限制
cannot find link.exe 找不到連接程序
cannot find cvpack.exe 找不到cvpack.exe
SEVERE 嚴重的錯誤
memory operand not allowed in context 內(nèi)存操作數(shù)無法載入上下文環(huán)境
immediate operand not allowed 當前操作數(shù)無法載入
cannot have more than one ELSE clause per IF block IF段只能有一個ELSE從句
extra characters after statement 附加的字符在聲明之后
symbol type conflict 符號類型沖突
symbol redefinition 符號已經(jīng)定義
undefined symbol 符號沒有定義
non-benign record redefinition 沒有利于記錄的定義
syntax error 語法錯誤
syntax error in expression 表達式存在語法錯誤
invalid type expression 無效的類型表達式
distance invalid for word size of current segment 當前區(qū)、段的大小命令無效
PROC, MACRO, or macro repeat directive must precede LOCAL PROC, MACRO, 或 macro repeat指令必須在LOCAL之前
.MODEL must precede this directive .MODEL必須在指令之前
cannot define as public or external 不能定義為公有或外部的
segment attributes cannot change 區(qū)、段屬性不能更換
expression expected 預期表達式
operator expected 預期操作數(shù)
invalid use of external symbol 使用了無效的外部符號
operand must be RECORD type or field 操作數(shù)必須是RECORD類型或域
identifier not a record 沒有記錄標示符
record constants may not span line breaks 連續(xù)記錄不能超過行間隔
instruction operands must be the same size 命令操作數(shù)必須是一樣的長度
instruction operand must have size 命令操作數(shù)必須有長度
invalid operand size for instruction 操作數(shù)長度對于指令無效
operands must be in same segment 操作數(shù)必須在相同的段
constant expected 連續(xù)預期
operand must be a memory expression 操作數(shù)必須是一個內(nèi)存表達式
expression must be a code address 表達式必須是一個代碼地址
multiple base registers not allowed 不允許多重基礎(chǔ)寄存器
multiple index registers not allowed 不允許多重標志寄存器
must be index or base register 必須是基礎(chǔ)或標志寄存器
invalid use of register 使用的寄存器無效
invalid INVOKE argument 無效的INVOKE符號
must be in segment block 必須在區(qū)、段、塊中
DUP too complex DUP太復雜
too many initial values for structure 太多結(jié)構(gòu)的基礎(chǔ)資料
statement not allowed inside structure definition 聲明不允許在結(jié)構(gòu)里面
missing operand for macro operator 找不到宏的操作數(shù)
line too long
segment register not allowed in context 上下文不允許有寄存器
string or text literal too long 文本或字符串太長
statement too complex 聲明太復雜
identifier too long 標識符太長
invalid character in file 文件里有無效字符
missing angle bracket or brace in literal 語句里找不到同樣的括弧或框架
missing single or double quotation mark in string 找不到單引號或雙引號
empty (null) string 沒有字符串
nondigit in number 沒有總數(shù)
syntax error in floating-point constant 不確定的指向中有語法錯誤
real or BCD number not allowed 不允許real或BCD編碼
text item required 必須的文本項
forced error 強制錯誤
forced error : value equal to 0 標準等于零
forced error : value not equal to 0 標準不等于零
forced error : symbol not defined 符號沒有定義
forced error : symbol defined 符號已定義
forced error : string blank 字符串是空的
forced error : string not blank 字符串不是空的
forced error : strings equal 字符串是相同的
forced error : strings not equal 字符串不是相同的
[ELSE]IF2/.ERR2 not allowed : single-pass assembler [ELSE]IF2/.ERR2不允許單獨匯編
expression too complex for .UNTILCXZ .UNTILCXZ表達式太復雜
can ALIGN only to power of 2 僅能對齊到2的冪
structure alignment must be 1, 2, 4, 8, or 16 結(jié)構(gòu)對齊必須是1,2,4,8或16
expected 預定義
incompatible CPU mode and segment size 不匹配的CPU模式和段尺寸
LOCK must be followed by a memory operation LOCK指令必須跟在內(nèi)存操作之后
instruction prefix not allowed 不允許的命令前綴
no operands allowed for this instruction 指令沒有操作數(shù)
invalid instruction operands 無效的指令操作數(shù)
initializer magnitude too large for specified size 初始指定尺寸太大
cannot access symbol in given segment or group 在特定的段或類不能存取符號
operands have different frames 操作數(shù)存在不同的結(jié)構(gòu)
cannot access label through segment registers 在段寄存器中不能存取標記
jump destination too far 跳轉(zhuǎn)目標太遠
jump destination must specify a label 跳轉(zhuǎn)目標必須指定一個標記
instruction does not allow NEAR indirect addressing 指令不允許近間接尋址
instruction does not allow FAR indirect addressing 指令不允許遠間接尋址
instruction does not allow FAR direct addressing 指令不允許遠直接尋址
jump distance not possible in current CPU mode 跳轉(zhuǎn)距離不適合當前CPU模式
missing operand after unary operator 一元運算符之后找不到操作數(shù)
cannot mix 16- and 32-bit registers 不能結(jié)合16位和32位寄存器
invalid scale value 無效范圍標準
constant value too large 連續(xù)標準太多
instruction or register not accepted in current CPU mode 當前CPU模式不認可的指令或寄存器
reserved word expected 預期的保留字
instruction form requires 80386/486 指令需要80386/486指示
END directive required at end of file END指令必須在文件結(jié)尾
too many bits in RECORD 太多位在記錄里
positive value expected 預期的明確的標準
index value past end of string 索引標準在字符串結(jié)尾之后
count must be positive or zero 計數(shù)必須是零或明確的
count value too large 計數(shù)標準太多
operand must be relocatable 操作數(shù)必須是轉(zhuǎn)移表
constant or relocatable label expected 預期的轉(zhuǎn)移表或連續(xù)的
segment, group, or segment register expected 預期的段,類型或段寄存器
segment expected 預期的區(qū)段
invalid operand for OFFSET OFFSET操作數(shù)無效
invalid use of external absolute 由于完全外部的使用無效
segment or group not allowed 區(qū)段或類型不允許
cannot add two relocatable labels 不能增加雙重轉(zhuǎn)移表標記
cannot add memory expression and code label 不能增加內(nèi)存表達式和代碼標記