📄 wasm.gml
字号:
~.listif .listmacro .listmacroall lldt lmsw local
lock lods lodsb lodsd lodsw loop
loopd loope looped loopew loopne loopned
loopnew loopnz loopnzd loopnzw loopw loopz
loopzd loopzw low lowword lroffset lsl
lss lt ltr macro mask maskmovdqu
maskmovq maxpd maxps maxsd maxss medium
memory mfence minpd minps minsd minss
mm0 mm1 mm2 mm3 mm4 mm5
mm6 mm7 .mmx mod .model monitor
mov movapd movaps movd movddup movdq2q
movdqa movdqu movhlps movhpd movhps movlhps
movlpd movlps movmskpd movmskps movntdq movnti
movntpd movntps movntq movq movq2dq movs
movsb movsd movshdup movsldup movss movsw
movsx movupd movups movzx mul mulpd
mulps mulsd mulss mwait name ne
near nearstack neg .no87 .nocref .nolist
nop not nothing offset opattr option
or org orpd orps os_dos os_os2
out outs outsb outsd outsw oword
packssdw packsswb packuswb paddb paddd paddq
paddsb paddsw paddusb paddusw paddw page
pand pandn para pascal pause pavgb
pavgusb pavgw pcmpeqb pcmpeqd pcmpeqw pcmpgtb
pcmpgtd pcmpgtw pextrw pf2id pf2iw pfacc
.millust break
pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin
pfmul pfnacc pfpnacc pfrcp pfrcpit1 pfrcpit2
pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pi2fw
pinsrw pmaddwd pmaxsw pmaxub pminsw pminub
pmovmskb pmulhrw pmulhuw pmulhw pmullw pmuludq
pop popa popad popcontext popf popfd
por prefetch prefetchnta prefetcht0 prefetcht1 prefetcht2
prefetchw private proc proto psadbw pshufd
pshufhw pshuflw pshufw pslld pslldq psllq
psllw psrad psraw psrld psrldq psrlq
psrlw psubb psubd psubq psubsb psubsw
psubusb psubusw psubw pswapd ptr public
punpckhbw punpckhdq punpckhqdq punpckhwd punpcklbw punpckldq
punpcklqdq punpcklwd purge push pusha pushad
pushcontext pushd pushf pushfd pushw pword
pxor qword .radix rcl rcpps rcpss
rcr rdmsr rdpmc rdtsc readonly record
rep repe .repeat repeat repne repnz
rept repz ret retd retf retfd
retn rol ror rsm rsqrtps rsqrtss
sahf sal .sall sar sbb sbyte
scas scasb scasd scasw sdword seg
segment .seq seta setae setb setbe
setc sete setg setge setl setle
setna setnae setnb setnbe setnc setne
setng setnge setnl setnle setno setnp
setns setnz seto setp setpe setpo
sets setz .sfcond sfence sgdt shl
shld short shr shrd shufpd shufps
si sidt size sizeof sldt small
smsw sp sqrtpd sqrtps sqrtsd sqrtss
ss st .stack .startup stc std
stdcall sti stmxcsr stos stosb stosd
stosw str struc struct sub subpd
subps subsd subss subtitle subttl sword
syscall sysenter sysexit tbyte test textequ
.millust break
~.tfcond this tiny title tr3 tr4
tr5 tr6 tr7 typedef ucomisd ucomiss
union unpckhpd unpckhps unpcklpd unpcklps .until
use16 use32 uses vararg verr verw
wait watcom_c wbinvd .while width word
wrmsr xadd xchg .xcref xlat xlatb
~.xlist .xmm xmm0 xmm1 .xmm2 xmm2
~.xmm3 xmm3 xmm4 xmm5 xmm6 xmm7
xor xorpd xorps
.millust end
.*
.section Unsupported Directives
.*
.np
Other assemblers support directives that this assembler does not.
The following is a list of directives that are ignored by the
&asmname. (use of these directives results in a warning message).
.ix '.alpha'
.ix '.cref'
.ix '.lfcond'
.ix '.list'
.ix '.listall'
.ix '.listif'
.ix '.listmacro'
.ix '.listmacroall'
.ix '.nocref'
.ix '.nolist'
.ix 'page'
.ix '.sall'
.ix '.seq'
.ix '.sfcond'
.ix 'subtitle'
.ix 'subttl'
.ix '.tfcond'
.ix 'title'
.ix '.xcref'
.ix '.xlist'
.millust begin
~.alpha .cref .lfcond .list
~.listall .listif .listmacro .listmacroall
~.nocref .nolist page .sall
~.seq .sfcond subtitle subttl
~.tfcond title .xcref .xlist
.millust end
.np
The following is a list of directives that are flagged by the
&asmname. (use of these directives results in an error message).
.ix 'addr'
.ix '.break'
.ix 'casemap'
.ix 'catstr'
.ix '.continue'
.ix 'echo'
.ix '.else'
.ix 'endmacro'
.ix '.endif'
.ix '.endw'
.ix '.exit'
.ix 'high'
.ix 'highword'
.ix '.if'
.ix 'invoke'
.ix 'low'
.ix 'lowword'
.ix 'lroffset'
.ix 'mask'
.ix 'opattr'
.ix 'option'
.ix 'popcontext'
.ix 'proto'
.ix 'purge'
.ix 'pushcontext'
.ix '.radix'
.ix 'record'
.ix '.repeat'
.ix '.startup'
.ix 'this'
.ix 'typedef'
.ix 'union'
.ix '.until'
.ix '.while'
.ix 'width'
.millust begin
addr .break casemap catstr
~.continue echo .else endmacro
~.endif .endw .exit high
highword .if invoke low
lowword lroffset mask opattr
option popcontext proto purge
pushcontext .radix record .repeat
~.startup this typedef union
~.until .while width
.millust end
.*
.section &asmname Specific
.*
.np
There are a few specific features in &asmname.
.np
.beglevel
.section Naming convention
.millust begin
Procedure Variable
Convention Name Name
--------------- ---------- ---------
C '*' '*'
C (MASM) '_*' '_*' see note 1
WATCOM_C '*_' '_*'
SYSCALL '*' '*'
STDCALL '_*@nn' '_*'
STDCALL '_*' '_*' see note 2
STDCALL '*' '*' see note 3
BASIC '^' '^'
FORTRAN '^' '^'
PASCAL '^' '^'
.millust end
.autonote Notes:
.note
WASM uses MASM compatible names when -zcm command line option is used.
.note
In STDCALL procedures name 'nn' is overall parametrs size in bytes.
'@nn' is suppressed when -zz command line option is used (WATCOM 10.0 compatibility).
.note
STDCALL symbols mangling is suppressed by -zzo command line option (WASM backward compatible).
.endnote
.np
.section &company "C" name mangler
.millust begin
Command line Procedure Others
option Name Names
--------------- ---------- ---------
0,1,2 '*_' '_*'
3,4,5,6 with r '*_' '_*'
3,4,5,6 with s '*' '*'
.millust end
.np
.section Calling convention
.millust begin
Parameters Parameters Cleanup caller
Convention Vararg passed by order stack
----------- ------ ------------ ------------- --------------
C yes stack right to left no
WATCOM_C yes registers right to left no
SYSCALL yes stack right to left no
STDCALL yes stack right to left yes see note 1
BASIC no stack left to right yes
FORTRAN no stack left to right yes
PASCAL no stack left to right yes
.millust end
.autonote Notes:
.note
For STDCALL procedures WASM automaticaly cleanup caller stack,
except case when vararg parameter is used.
.endnote
.endlevel
.*
.section &asmname. Diagnostic Messages
.*
.dm errnote begin
. .se *ctxn=&'substr(&*,1,&'pos(' ',&*)-1)
. .se *ttl$=&'substr(&*,&'pos(' ',&*)+1)
. .note &*ctxn &*ttl$
.* .us &*ttl$
.dm errnote end
.*
.begnote
.*
.errnote 001 Size doesn't match with previous definition
.errnote 002 Invalid instruction with current CPU setting
.errnote 003 LOCK prefix is not allowed on this instruction
.errnote 004 REP prefix is not allowed on this instruction
.errnote 005 Invalid memory pointer
.errnote 006 Cannot use 386 addressing mode with current CPU setting
.errnote 007 Too many base registers
.errnote 008 Invalid index register
.errnote 009 Scale factor must be 1, 2, 4 or 8
.errnote 010 invalid addressing mode with current CPU setting
.errnote 011 ESP cannot be used as index
.errnote 012 Too many base/index registers
.errnote 013 Memory offset cannot reference to more than one label
.errnote 014 Offset must be relocatable
.errnote 015 Memory offset expected
.errnote 016 Invalid indirect memory operand
.errnote 017 Cannot mix 16 and 32-bit registers
.errnote 018 CPU type already set
.errnote 019 Unknown directive
.errnote 020 Expecting comma
.errnote 021 Expecting number
.errnote 022 Invalid label definition
.errnote 023 Invalid use of SHORT, NEAR, FAR operator
.errnote 024 No memory
.errnote 025 Cannot use 386 segment register with current CPU setting
.errnote 026 POP CS is not allowed
.errnote 027 Cannot use 386 register with current CPU setting
.errnote 028 Only MOV can use special register
.errnote 029 Cannot use TR3, TR4, TR5 in current CPU setting
.errnote 030 Cannot use SHORT with CALL
.errnote 031 Only SHORT displacement is allowed
.errnote 032 Syntax error
.errnote 033 Prefix must be followed by an instruction
.errnote 034 No size given before 'PTR' operator
.errnote 035 Invalid IMUL format
.errnote 036 Invalid SHLD/SHRD format
.errnote 037 Too many commas
.errnote 038 Syntax error: Unexpected colon
.errnote 039 Operands must be the same size
.errnote 040 Invalid instruction operands
.errnote 041 Immediate constant too large
.errnote 042 Can not use short or near modifiers with this instruction
.errnote 043 Jump out of range
.errnote 044 Displacement cannot be larger than 32k
.errnote 045 Initializer value too large
.errnote 046 Symbol already defined
.errnote 047 Immediate data too large
.errnote 048 Immediate data out of range
.errnote 049 Can not transfer control to stack symbol
.errnote 050 Offset cannot be smaller than WORD size
.errnote 051 Can not take offset of stack symbol
.errnote 052 Can not take segment of stack symbol
.errnote 053 Segment too large
.errnote 054 Offset cannot be larger than 32k
.errnote 055 Operand 2 too big
.errnote 056 Operand 1 too small
.errnote 057 Too many arithmetic operators
.errnote 058 Too many open square brackets
.errnote 059 Too many close square brackets
.errnote 060 Too many open brackets
.errnote 061 Too many close brackets
.errnote 062 Invalid number digit
.errnote 063 Assembler Code is too long
.errnote 064 Brackets are not balanced
.errnote 065 Operator is expected
.errnote 066 Operand is expected
.errnote 067 Too many tokens in a line
.errnote 068 Bracket is expected
.errnote 069 Illegal use of register
.errnote 070 Illegal use of label
.errnote 071 Invalid operand in addition
.errnote 072 Invalid operand in subtraction
.errnote 073 One operand must be constant
.errnote 074 Constant operand is expected
.errnote 075 A constant operand is expected in addition
.errnote 076 A constant operand is expected in subtraction
.errnote 077 A constant operand is expected in multiplication
.errnote 078 A constant operand is expected in division
.errnote 079 A constant operand is expected after a positive sign
.errnote 080 A constant operand is expected after a negative sign
.errnote 081 Label is not defined
.errnote 082 More than one override
.errnote 083 Label is expected
.errnote 084 Only segment or group label is allowed
.errnote 085 Only register or label is expected in override
.errnote 086 Unexpected end of file
.errnote 087 Label is too long
.errnote 088 This feature has not been implemented yet
.errnote 089 Internal Error #1
.errnote 090 Can not take offset of group
.errnote 091 Can not take offset of segment
.errnote 092 Invalid character found
.errnote 093 Invalid operand size for instruction
.errnote 094 This instruction is not supported
.errnote 095 size not specified -- BYTE PTR is assumed
.errnote 096 size not specified -- WORD PTR is assumed
.errnote 097 size not specified -- DWORD PTR is assumed
.*
.errnote 500 Segment parameter is defined already
.errnote 501 Model parameter is defined already
.errnote 502 Syntax error in segment definition
.errnote 503 'AT' is not supported in segment definition
.errnote 504 Segment definition is changed
.errnote 505 Lname is too long
.errnote 506 Block nesting error
.errnote 507 Ends a segment which is not opened
.errnote 508 Segment option is undefined
.errnote 509 Model option is undefined
.errnote 510 No segment is currently opened
.errnote 511 Lname is used already
.errnote 512 Segment is not defined
.errnote 513 Public is not defined
.errnote 514 Colon is expected
.errnote 515 A token is expected after colon
.errnote 516 Invalid qualified type
.errnote 517 Qualified type is expected
.errnote 518 External definition different from previous one
.errnote 519 Memory model is not found in .MODEL
.errnote 520 Cannot open include file
.errnote 521 Name is used already
.errnote 522 Library name is missing
.errnote 523 Segment name is missing
.errnote 524 Group name is missing
.errnote 525 Data emitted with no segment
.errnote 526 Seglocation is expected
.errnote 527 Invalid register
.errnote 528 Cannot address with assumed register
.errnote 529 Invalid start address
.errnote 530 Label is already defined
.errnote 531 Token is too long
.errnote 532 The line is too long after expansion
.errnote 533 A label is expected after colon
.errnote 534 Must be associated with code
.errnote 535 Procedure must have a name
.errnote 536 Procedure is alreadly defined
.errnote 537 Language type must be specified
.errnote 538 End of procedure is not found
.errnote 539 Local variable must immediately follow PROC or MACRO statement
.errnote 540 Extra character found
.errnote 541 Cannot nest procedures
.errnote 542 No procedure is currently defined
.errnote 543 Procedure name does not match
.errnote 544 Vararg requires C calling convention
.errnote 545 Model declared already
.errnote 546 Model is not declared
.errnote 547 Backquote expected
.errnote 548 COMMENT delimiter expected
.errnote 549 End directive required at end of file
.errnote 550 Nesting level too deep
.errnote 551 Symbol not defined
.errnote 552 Insert Stupid warning #1 here
.errnote 553 Insert Stupid warning #2 here
.errnote 554 Spaces not allowed in command line options
.errnote 555 Error:
.errnote 556 Source File
.errnote 557 No filename specified.
.errnote 558 Out of Memory
.errnote 559 Cannot Open File -
.errnote 560 Cannot Close File -
.errnote 561 Cannot Get Start of Source File -
.errnote 562 Cannot Set to Start of Source File -
.errnote 563 Command Line Contains More Than 1 File To Assemble
.errnote 564 include path %s.
.errnote 565 Unknown option %s. Use /? for list of options.
.errnote 566 read more command line from %s.
.errnote 567 Internal error in %s(%u)
.errnote 568 OBJECT WRITE ERROR !!
.errnote 569 NO LOR PHARLAP !!
.errnote 570 Parameter Required
.errnote 571 Expecting closing square bracket
.errnote 572 Expecting file name
.errnote 573 Floating point instruction not allowed with /fpc
.errnote 574 Too many errors
.errnote 575 Build target not recognised
.errnote 576 Public constants should be numeric
.errnote 577 Expecting symbol
.errnote 578 Do not mix simplified and full segment definitions
.errnote 579 Parms passed in multiple registers must be accessed separately, use %s
.errnote 580 Ten byte variables not supported in register calling convention
.errnote 581 Parameter type not recognised
.errnote 582 forced error:
.errnote 583 forced error: Value not equal to 0 : %d
.errnote 584 forced error: Value equal to 0: %d
.errnote 585 forced error: symbol defined: %s
.errnote 586 forced error: symbol not defined: %s
.errnote 587 forced error: string blank : <%s>
.errnote 588 forced error: string not blank : <%s>
.errnote 589 forced error: strings not equal : <%s> : <%s>
.errnote 590 forced error: strings equal : <%s> : <%s>
.errnote 591 included by file %s(%d)
.errnote 592 macro called from file %s(%d)
.errnote 593 Symbol %s not defined
.errnote 594 Extending jump
.errnote 595 Ignoring inapplicable directive
.errnote 596 Unknown symbol class '%s'
.errnote 597 Symbol class for '%s' already established
.errnote 598 number must be a power of 2
.errnote 599 alignment request greater than segment alignment
.errnote 600 '%s' is already defined
.errnote 601 %u unclosed conditional directive(s) detected
.*
.endnote
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -