macro.esm

来自「开放源码的编译器open watcom 1.6.0版的源代码」· ESM 代码 · 共 2,310 行 · 第 1/5 页

ESM
2,310
字号
.387
		PUBLIC	ExpandMacro_
		PUBLIC	MacroDef_
		EXTRN	__STK:BYTE
		EXTRN	AsmAlloc_:BYTE
		EXTRN	strlen_:BYTE
		EXTRN	strcpy_:BYTE
		EXTRN	strncmp_:BYTE
		EXTRN	strncpy_:BYTE
		EXTRN	strcat_:BYTE
		EXTRN	sprintf_:BYTE
		EXTRN	InternalError_:BYTE
		EXTRN	AsmFree_:BYTE
		EXTRN	__IsTable:BYTE
		EXTRN	wipe_space_:BYTE
		EXTRN	strnicmp_:BYTE
		EXTRN	_AsmBuffer:BYTE
		EXTRN	AsmError_:BYTE
		EXTRN	PushLineQueue_:BYTE
		EXTRN	_MacroLocalVarCounter:BYTE
		EXTRN	InputQueueLine_:BYTE
		EXTRN	_Parse_Pass:BYTE
		EXTRN	AsmGetSymbol_:BYTE
		EXTRN	_Token_Count:BYTE
		EXTRN	strcmp_:BYTE
		EXTRN	ReadTextLine_:BYTE
		EXTRN	strncat_:BYTE
		EXTRN	atoi_:BYTE
		EXTRN	stackavail_:BYTE
		EXTRN	DoDebugMsg_:BYTE
		EXTRN	itoa_:BYTE
		EXTRN	ExpandSymbol_:BYTE
		EXTRN	EvalExpr_:BYTE
		EXTRN	_StringBuf:BYTE
		EXTRN	AsmScan_:BYTE
		EXTRN	PushMacro_:BYTE
		EXTRN	dir_insert_:BYTE
		EXTRN	get_curr_filename_:BYTE
		EXTRN	_big_code_:BYTE
DGROUP		GROUP	CONST,CONST2,_DATA,_BSS
macro_TEXT		SEGMENT	BYTE PUBLIC USE16 'CODE'
		ASSUME CS:macro_TEXT, DS:DGROUP, SS:DGROUP
L$1:
    DB	4dH, 61H, 63H, 72H, 6fH, 20H, 65H, 78H
    DB	70H, 61H, 6eH, 73H, 69H, 6fH, 6eH, 3aH
    DB	20H, 20H, 25H, 73H, 20H, 0aH, 0
L$2:
    DB	2eH, 2eH, 5cH, 63H, 5cH, 6dH, 61H, 63H
    DB	72H, 6fH, 2eH, 63H, 0
L$3:
    DB	20H, 54H, 45H, 58H, 54H, 45H, 51H, 55H
    DB	20H, 0
L$4:
    DB	3fH, 3fH, 25H, 23H, 30H, 34H, 64H, 0
L$5:
    DB	6cH, 6fH, 63H, 61H, 6cH, 0
L$6:
    DB	6dH, 61H, 63H, 72H, 6fH, 0
L$7:
    DB	65H, 6eH, 64H, 6dH, 0
L$8:
    DB	52H, 45H, 51H, 0
L$9:
    DB	25H, 32H, 64H, 0
L$10:
    DB	23H, 0
L$11:
    push        bp
    mov         bp,sp
    push        ax
    mov         ax,1cH
    call        far ptr __STK
    pop         ax
    push        si
    push        di
    sub         sp,14H
    mov         word ptr -18H[bp],ax
    mov         word ptr -16H[bp],dx
    mov         word ptr -14H[bp],bx
    mov         word ptr -12H[bp],cx
    mov         ax,word ptr -18H[bp]
    mov         word ptr -0cH[bp],ax
    mov         ax,word ptr -16H[bp]
    mov         word ptr -0aH[bp],ax
L$12:
    lds         bx,dword ptr -0cH[bp]
    mov         dx,word ptr [bx]
    lds         bx,dword ptr -0cH[bp]
    mov         ax,word ptr 2[bx]
    xor         cx,cx
    xor         bx,bx
    cmp         ax,bx
    jne         L$14
    cmp         dx,cx
    jne         L$14
    jmp         L$15
L$13:
    lds         bx,dword ptr -0cH[bp]
    mov         dx,word ptr [bx]
    lds         bx,dword ptr -0cH[bp]
    mov         ax,word ptr 2[bx]
    mov         word ptr -0cH[bp],dx
    mov         word ptr -0aH[bp],ax
    jmp         L$12
L$14:
    jmp         L$13
L$15:
    mov         ax,9
    call        far ptr AsmAlloc_
    mov         cx,ax
    mov         bx,dx
    mov         word ptr -8[bp],cx
    mov         word ptr -6[bp],bx
    lds         bx,dword ptr -8[bp]
    mov         word ptr [bx],0
    lds         bx,dword ptr -8[bp]
    mov         word ptr 2[bx],0
    mov         bx,word ptr -14H[bp]
    mov         dx,word ptr -12H[bp]
    mov         ax,bx
    call        far ptr strlen_
    inc         ax
    call        far ptr AsmAlloc_
    mov         cx,ax
    mov         bx,dx
    lds         si,dword ptr -8[bp]
    mov         word ptr 4[si],cx
    lds         si,dword ptr -8[bp]
    mov         word ptr 6[si],bx
    lds         bx,dword ptr -8[bp]
    mov         byte ptr 8[bx],0
    mov         si,word ptr -14H[bp]
    mov         cx,word ptr -12H[bp]
    lds         bx,dword ptr -8[bp]
    mov         bx,word ptr 4[bx]
    lds         di,dword ptr -8[bp]
    mov         dx,word ptr 6[di]
    mov         ax,bx
    mov         bx,si
    call        far ptr strcpy_
    mov         bx,word ptr -8[bp]
    lds         si,dword ptr -0cH[bp]
    mov         word ptr [si],bx
    mov         bx,word ptr -6[bp]
    lds         si,dword ptr -0cH[bp]
    mov         word ptr 2[si],bx
    mov         bx,word ptr -8[bp]
    mov         word ptr -10H[bp],bx
    mov         bx,word ptr -6[bp]
    mov         word ptr -0eH[bp],bx
    mov         ax,word ptr -10H[bp]
    mov         dx,word ptr -0eH[bp]
    lea         sp,-4[bp]
    pop         di
    pop         si
    pop         bp
    ret         
L$16:
    push        bp
    mov         bp,sp
    push        ax
    mov         ax,38H
    call        far ptr __STK
    pop         ax
    push        si
    push        di
    sub         sp,26H
    mov         word ptr -1cH[bp],ax
    mov         word ptr -1aH[bp],dx
    mov         word ptr -20H[bp],bx
    mov         word ptr -1eH[bp],cx
    mov         byte ptr -8[bp],0
    lds         bx,dword ptr 6[bp]
    mov         ax,word ptr 4[bx]
    mov         word ptr -18H[bp],ax
    lds         bx,dword ptr 6[bp]
    mov         ax,word ptr 6[bx]
    mov         word ptr -16H[bp],ax
    mov         ax,word ptr -1cH[bp]
    mov         word ptr -10H[bp],ax
    mov         ax,word ptr -1aH[bp]
    mov         word ptr -0eH[bp],ax
L$17:
    mov         cx,word ptr -10H[bp]
    mov         bx,word ptr -0eH[bp]
    xor         dx,dx
    xor         ax,ax
    cmp         bx,ax
    jne         L$19
    cmp         cx,dx
    jne         L$19
    jmp         near ptr L$30
L$18:
    lds         bx,dword ptr -10H[bp]
    mov         dx,word ptr [bx]
    lds         bx,dword ptr -10H[bp]
    mov         ax,word ptr 2[bx]
    mov         word ptr -10H[bp],dx
    mov         word ptr -0eH[bp],ax
    jmp         L$17
L$19:
    lds         bx,dword ptr -10H[bp]
    mov         dx,word ptr 4[bx]
    lds         bx,dword ptr -10H[bp]
    mov         ax,word ptr 6[bx]
    xor         cx,cx
    xor         bx,bx
    cmp         ax,bx
    jne         L$20
    cmp         dx,cx
    je          L$21
L$20:
    lds         bx,dword ptr -10H[bp]
    mov         bx,word ptr 4[bx]
    lds         si,dword ptr -10H[bp]
    mov         dx,word ptr 6[si]
    mov         ax,bx
    call        far ptr strlen_
    mov         dl,byte ptr 4[bp]
    xor         dh,dh
    cmp         ax,dx
    je          L$22
L$21:
    jmp         L$23
L$22:
    mov         dl,byte ptr 4[bp]
    xor         dh,dh
    push        dx
    lds         si,dword ptr -10H[bp]
    mov         si,word ptr 4[si]
    lds         bx,dword ptr -10H[bp]
    mov         cx,word ptr 6[bx]
    mov         bx,word ptr -20H[bp]
    mov         dx,word ptr -1eH[bp]
    mov         ax,bx
    mov         bx,si
    call        far ptr strncmp_
    test        ax,ax
    je          L$24
L$23:
    jmp         near ptr L$29
L$24:
    mov         bx,word ptr -18H[bp]
    mov         dx,word ptr -16H[bp]
    mov         ax,bx
    call        far ptr strlen_
    mov         dx,ax
    mov         al,byte ptr 4[bp]
    xor         ah,ah
    sub         dx,ax
    add         dx,4
    mov         ax,dx
    call        far ptr AsmAlloc_
    mov         bx,dx
    mov         word ptr -14H[bp],ax
    mov         word ptr -12H[bp],bx
    mov         dx,word ptr -20H[bp]
    mov         ax,word ptr -1eH[bp]
    sub         dx,word ptr -18H[bp]
    mov         byte ptr -6[bp],dl
    lds         bx,dword ptr -20H[bp]
    cmp         byte ptr -1[bx],26H
    jne         L$25
    mov         al,byte ptr -6[bp]
    dec         byte ptr -6[bp]
L$25:
    mov         dl,byte ptr -6[bp]
    xor         dh,dh
    push        dx
    mov         si,word ptr -18H[bp]
    mov         cx,word ptr -16H[bp]
    mov         bx,word ptr -14H[bp]
    mov         dx,word ptr -12H[bp]
    mov         ax,bx
    mov         bx,si
    call        far ptr strncpy_
    mov         dl,byte ptr -6[bp]
    xor         dh,dh
    lds         bx,dword ptr -14H[bp]
    add         bx,dx
    mov         byte ptr [bx],0
    mov         cx,cs
    mov         dx,offset L$10
    mov         si,dx
    mov         bx,word ptr -14H[bp]
    mov         dx,word ptr -12H[bp]
    mov         ax,bx
    mov         bx,si
    call        far ptr strcat_
    mov         dl,byte ptr -8[bp]
    xor         dh,dh
    push        dx
    mov         dx,cs
    mov         bx,offset L$9
    push        dx
    push        bx
    mov         dx,ss
    lea         bx,-2aH[bp]
    push        dx
    push        bx
    call        far ptr sprintf_
    add         sp,0aH
    cmp         ax,2
    je          L$26
    mov         cx,94H
    mov         dx,cs
    mov         ax,offset L$2
    mov         bx,ax
    mov         ax,bx
    mov         bx,cx
    jmp         far ptr InternalError_
L$26:
    cmp         byte ptr -2aH[bp],20H
    jne         L$27
    mov         byte ptr -2aH[bp],30H
L$27:
    mov         cx,ss
    lea         dx,-2aH[bp]
    mov         si,dx
    mov         bx,word ptr -14H[bp]
    mov         dx,word ptr -12H[bp]
    mov         ax,bx
    mov         bx,si
    call        far ptr strcat_
    mov         dl,byte ptr 4[bp]
    xor         dh,dh
    lds         bx,dword ptr -20H[bp]
    add         bx,dx
    cmp         byte ptr [bx],26H
    jne         L$28
    mov         al,byte ptr 4[bp]
    inc         byte ptr 4[bp]
L$28:
    mov         al,byte ptr 4[bp]
    xor         ah,ah
    mov         cx,word ptr -1eH[bp]
    mov         si,word ptr -20H[bp]
    add         si,ax
    mov         bx,word ptr -14H[bp]
    mov         dx,word ptr -12H[bp]
    mov         ax,bx
    mov         bx,si
    call        far ptr strcat_
    mov         ax,word ptr -14H[bp]
    lds         bx,dword ptr 6[bp]
    mov         word ptr 4[bx],ax
    mov         ax,word ptr -12H[bp]
    lds         bx,dword ptr 6[bp]
    mov         word ptr 6[bx],ax
    lds         bx,dword ptr 6[bp]
    inc         byte ptr 8[bx]
    mov         bx,word ptr -18H[bp]
    mov         dx,word ptr -16H[bp]
    mov         ax,bx
    call        far ptr AsmFree_
    mov         ax,word ptr -12H[bp]
    mov         word ptr -0aH[bp],ax
    mov         ax,word ptr -14H[bp]
    add         ax,3
    mov         word ptr -0cH[bp],ax
    jmp         L$31
L$29:
    mov         al,byte ptr -8[bp]
    inc         byte ptr -8[bp]
    jmp         near ptr L$18
L$30:
    mov         al,byte ptr 4[bp]
    xor         ah,ah
    mov         dx,ax
    mov         ax,word ptr -1eH[bp]
    mov         word ptr -0aH[bp],ax
    mov         bx,word ptr -20H[bp]
    add         bx,dx
    mov         word ptr -0cH[bp],bx
L$31:
    mov         ax,word ptr -0cH[bp]
    mov         dx,word ptr -0aH[bp]
    lea         sp,-4[bp]
    pop         di
    pop         si
    pop         bp
    ret         6
L$32:
    push        bp
    mov         bp,sp
    push        ax
    mov         ax,26H
    call        far ptr __STK
    pop         ax
    push        si
    push        di
    sub         sp,18H
    mov         word ptr -1cH[bp],ax
    mov         word ptr -1aH[bp],dx
    mov         word ptr -18H[bp],bx
    mov         word ptr -16H[bp],cx
    mov         byte ptr -6[bp],0
    lds         bx,dword ptr -1cH[bp]
    mov         ax,word ptr 4[bx]
    mov         word ptr -10H[bp],ax
    lds         bx,dword ptr -1cH[bp]
    mov         ax,word ptr 6[bx]
    mov         word ptr -0eH[bp],ax
    mov         ax,word ptr -10H[bp]
    mov         word ptr -14H[bp],ax
    mov         ax,word ptr -0eH[bp]
    mov         word ptr -12H[bp],ax
L$33:
    lds         bx,dword ptr -14H[bp]
    cmp         byte ptr [bx],0
    jne         L$35
    jmp         near ptr L$76
L$34:
    jmp         L$33
L$35:
    lds         bx,dword ptr -14H[bp]
    cmp         byte ptr [bx],0
    jne         L$37
    jmp         near ptr L$53
L$36:
    mov         dx,word ptr -14H[bp]
    mov         ax,word ptr -12H[bp]
    inc         word ptr -14H[bp]
    jmp         L$35
L$37:
    lds         bx,dword ptr -14H[bp]
    mov         bl,byte ptr [bx]
    inc         bl
    xor         bh,bh
    test        byte ptr ss:__IsTable[bx],0c0H
    jne         L$38
    lds         bx,dword ptr -14H[bp]
    mov         bl,byte ptr [bx]
    inc         bl
    xor         bh,bh
    test        byte ptr ss:__IsTable[bx],20H
    je          L$39
L$38:
    jmp         L$40
L$39:
    lds         bx,dword ptr -14H[bp]
    cmp         byte ptr [bx],5fH
    jne         L$41
L$40:
    jmp         L$42
L$41:
    lds         bx,dword ptr -14H[bp]
    cmp         byte ptr [bx],40H
    jne         L$43
L$42:
    jmp         L$44
L$43:
    lds         bx,dword ptr -14H[bp]
    cmp         byte ptr [bx],24H
    jne         L$45
L$44:
    jmp         L$46
L$45:
    lds         bx,dword ptr -14H[bp]
    cmp         byte ptr [bx],3fH
    jne         L$48
L$46:

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?