main.esm

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

ESM
2,023
字号
.387
.386p
		PUBLIC	main_
		PUBLIC	trademark_
		PUBLIC	ProcessCmdlineOptions_
		PUBLIC	AsmQueryExternal_
		PUBLIC	AsmQueryType_
		PUBLIC	_Debug
		PUBLIC	_SignValue
		PUBLIC	_StopAtEnd
		PUBLIC	_BannerPrinted
		PUBLIC	_ErrorFlag
		PUBLIC	_WarningFlag
		PUBLIC	_DebugFlag
		PUBLIC	_NamingConvention
		PUBLIC	_CmdlineConstList
		PUBLIC	_AsmFiles
		PUBLIC	_pobjState
		EXTRN	__CHK:BYTE
		EXTRN	__IsTable:BYTE
		EXTRN	tolower_:BYTE
		EXTRN	MsgInit_:BYTE
		EXTRN	exit_:BYTE
		EXTRN	AsmInit_:BYTE
		EXTRN	WriteObjModule_:BYTE
		EXTRN	MsgFini_:BYTE
		EXTRN	PrintfUsage_:BYTE
		EXTRN	printf_:BYTE
		EXTRN	AsmFree_:BYTE
		EXTRN	MemInit_:BYTE
		EXTRN	ObjRecInit_:BYTE
		EXTRN	GenMSOmfInit_:BYTE
		EXTRN	GenMSOmfFini_:BYTE
		EXTRN	AsmShutDown_:BYTE
		EXTRN	MemFini_:BYTE
		EXTRN	fopen_:BYTE
		EXTRN	Fatal_:BYTE
		EXTRN	ObjWriteOpen_:BYTE
		EXTRN	DelErrFile_:BYTE
		EXTRN	MsgGet_:BYTE
		EXTRN	_splitpath2_:BYTE
		EXTRN	_makepath_:BYTE
		EXTRN	strlen_:BYTE
		EXTRN	AsmAlloc_:BYTE
		EXTRN	strcpy_:BYTE
		EXTRN	getenv_:BYTE
		EXTRN	_AsmBuffer:BYTE
		EXTRN	AsmScan_:BYTE
		EXTRN	StoreConstant_:BYTE
		EXTRN	PushLineQueue_:BYTE
		EXTRN	AddStringToIncludePath_:BYTE
		EXTRN	strcspn_:BYTE
		EXTRN	stackavail_:BYTE
		EXTRN	strncpy_:BYTE
		EXTRN	strchr_:BYTE
		EXTRN	strcat_:BYTE
		EXTRN	AsmError_:BYTE
		EXTRN	InputQueueLine_:BYTE
		EXTRN	MsgPrintf1_:BYTE
		EXTRN	_cstart_:BYTE
		EXTRN	__argc:BYTE
DGROUP		GROUP	CONST,CONST2,_DATA,_BSS
_TEXT		SEGMENT	BYTE PUBLIC USE32 'CODE'
		ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
L$1:
    push        ebp
    mov         ebp,esp
    push        2cH
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,10H
    mov         dword ptr -24H[ebp],eax
    mov         eax,dword ptr -24H[ebp]
    mov         al,byte ptr [eax]
    inc         al
    and         eax,0ffH
    test        byte ptr DGROUP:__IsTable[eax],20H
    je          L$2
    mov         dword ptr -20H[ebp],0ffffffffH
    jmp         near ptr L$20
L$2:
    mov         eax,dword ptr -24H[ebp]
    mov         dword ptr -1cH[ebp],eax
L$3:
    mov         eax,dword ptr -1cH[ebp]
    cmp         byte ptr [eax],0
    jne         L$5
    jmp         near ptr L$19
L$4:
    mov         eax,dword ptr -1cH[ebp]
    inc         dword ptr -1cH[ebp]
    jmp         L$3
L$5:
    mov         eax,dword ptr -1cH[ebp]
    mov         al,byte ptr [eax]
    and         eax,0ffH
    call        near ptr tolower_
    mov         byte ptr -18H[ebp],al
    cmp         byte ptr -18H[ebp],5fH
    je          L$6
    cmp         byte ptr -18H[ebp],2eH
    jne         L$7
L$6:
    jmp         L$8
L$7:
    cmp         byte ptr -18H[ebp],24H
    jne         L$9
L$8:
    jmp         L$10
L$9:
    cmp         byte ptr -18H[ebp],40H
    jne         L$11
L$10:
    jmp         L$12
L$11:
    cmp         byte ptr -18H[ebp],3fH
    jne         L$13
L$12:
    jmp         L$14
L$13:
    mov         al,byte ptr -18H[ebp]
    inc         al
    and         eax,0ffH
    test        byte ptr DGROUP:__IsTable[eax],20H
    je          L$15
L$14:
    jmp         L$16
L$15:
    mov         al,byte ptr -18H[ebp]
    inc         al
    and         eax,0ffH
    test        byte ptr DGROUP:__IsTable[eax],80H
    je          L$17
L$16:
    jmp         L$18
L$17:
    mov         dword ptr -20H[ebp],0ffffffffH
    jmp         L$20
L$18:
    jmp         L$4
L$19:
    mov         dword ptr -20H[ebp],1
L$20:
    mov         eax,dword ptr -20H[ebp]
    lea         esp,-14H[ebp]
    pop         edi
    pop         esi
    pop         edx
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
main_:
    push        ebp
    mov         ebp,esp
    push        24H
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        esi
    push        edi
    sub         esp,0cH
    mov         dword ptr -1cH[ebp],eax
    mov         dword ptr -18H[ebp],edx
    call        near ptr L$29
    mov         eax,dword ptr -18H[ebp]
    mov         eax,dword ptr [eax]
    call        near ptr MsgInit_
    test        eax,eax
    je          L$21
    mov         eax,1
    jmp         near ptr exit_
L$21:
    mov         eax,offset DGROUP:L$167
    call        near ptr L$77
    mov         edx,dword ptr -18H[ebp]
    mov         eax,dword ptr -1cH[ebp]
    call        near ptr L$160
    cmp         byte ptr DGROUP:L$201,0
    jne         L$22
    cmp         byte ptr DGROUP:_BannerPrinted,0
    je          L$23
L$22:
    jmp         L$24
L$23:
    mov         byte ptr DGROUP:_BannerPrinted,1
    call        near ptr trademark_
L$24:
    mov         ebx,0ffffffffH
    mov         edx,0ffffffffH
    mov         eax,0ffffffffH
    call        near ptr AsmInit_
    call        near ptr L$35
    call        near ptr WriteObjModule_
    call        near ptr MsgFini_
    call        near ptr L$34
    xor         eax,eax
    mov         al,byte ptr DGROUP:_ErrorFlag
    mov         dword ptr -14H[ebp],eax
    mov         eax,dword ptr -14H[ebp]
    lea         esp,-10H[ebp]
    pop         edi
    pop         esi
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
L$25:
    push        ebp
    mov         ebp,esp
    push        1cH
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,0
    mov         edx,7f0H
    mov         eax,7d0H
    call        near ptr PrintfUsage_
    mov         eax,1
    jmp         near ptr exit_
trademark_:
    push        ebp
    mov         ebp,esp
    push        28H
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,4
    mov         dword ptr -18H[ebp],0
    cmp         byte ptr DGROUP:L$201,0
    jne         L$27
L$26:
    mov         eax,dword ptr -18H[ebp]
    shl         eax,2
    cmp         dword ptr DGROUP:L$204[eax],0
    je          L$27
    mov         eax,dword ptr -18H[ebp]
    inc         dword ptr -18H[ebp]
    shl         eax,2
    push        dword ptr DGROUP:L$204[eax]
    mov         eax,offset DGROUP:L$172
    push        eax
    call        near ptr printf_
    add         esp,8
    jmp         L$26
L$27:
    lea         esp,-14H[ebp]
    pop         edi
    pop         esi
    pop         edx
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
L$28:
    push        ebp
    mov         ebp,esp
    push        1cH
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,0
    mov         eax,dword ptr DGROUP:L$205
    call        near ptr AsmFree_
    mov         eax,dword ptr DGROUP:L$206
    call        near ptr AsmFree_
    mov         eax,dword ptr DGROUP:L$207
    call        near ptr AsmFree_
    lea         esp,-14H[ebp]
    pop         edi
    pop         esi
    pop         edx
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
L$29:
    push        ebp
    mov         ebp,esp
    push        20H
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,4
    call        near ptr MemInit_
    mov         dword ptr -18H[ebp],0
L$30:
    cmp         dword ptr -18H[ebp],2
    jle         L$32
    jmp         L$33
L$31:
    mov         eax,dword ptr -18H[ebp]
    inc         dword ptr -18H[ebp]
    jmp         L$30
L$32:
    mov         eax,dword ptr -18H[ebp]
    shl         eax,2
    mov         dword ptr DGROUP:_AsmFiles[eax],0
    mov         eax,dword ptr -18H[ebp]
    shl         eax,2
    mov         dword ptr DGROUP:L$205[eax],0
    jmp         L$31
L$33:
    call        near ptr ObjRecInit_
    call        near ptr GenMSOmfInit_
    lea         esp,-14H[ebp]
    pop         edi
    pop         esi
    pop         edx
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
L$34:
    push        ebp
    mov         ebp,esp
    push        1cH
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,0
    call        near ptr L$28
    call        near ptr GenMSOmfFini_
    call        near ptr AsmShutDown_
    call        near ptr MemFini_
    lea         esp,-14H[ebp]
    pop         edi
    pop         esi
    pop         edx
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
L$35:
    push        ebp
    mov         ebp,esp
    push        24H
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        edx
    push        esi
    push        edi
    sub         esp,0
    mov         edx,offset DGROUP:L$173
    mov         eax,dword ptr DGROUP:L$205
    call        near ptr fopen_
    mov         dword ptr DGROUP:_AsmFiles,eax
    cmp         dword ptr DGROUP:_AsmFiles,0
    jne         L$36
    push        dword ptr DGROUP:L$205
    push        1
    call        near ptr Fatal_
    add         esp,8
L$36:
    mov         eax,dword ptr DGROUP:L$207
    call        near ptr ObjWriteOpen_
    mov         dword ptr DGROUP:L$208,eax
    cmp         dword ptr DGROUP:L$208,0
    jne         L$37
    push        dword ptr DGROUP:L$207
    push        1
    call        near ptr Fatal_
    add         esp,8
L$37:
    mov         byte ptr DGROUP:_pobjState,2
    call        near ptr DelErrFile_
    lea         esp,-14H[ebp]
    pop         edi
    pop         esi
    pop         edx
    pop         ecx
    pop         ebx
    pop         ebp
    ret         
L$38:
    push        ebp
    mov         ebp,esp
    push        1b0H
    call        near ptr __CHK
    push        ebx
    push        ecx
    push        esi
    push        edi
    sub         esp,190H
    mov         dword ptr -24H[ebp],eax
    mov         dword ptr -28H[ebp],edx
    cmp         dword ptr -28H[ebp],0
    jne         L$44
    cmp         dword ptr -24H[ebp],0
    jne         L$39
    lea         edx,-78H[ebp]
    mov         eax,43fH
    call        near ptr MsgGet_
    lea         eax,-78H[ebp]
    push        eax
    push        1
    call        near ptr Fatal_
    add         esp,8
L$39:
    cmp         dword ptr DGROUP:L$205,0
    je          L$40
    push        5
    call        near ptr Fatal_
    add         esp,4
L$40:
    lea         eax,-20H[ebp]
    push        eax
    lea         eax,-1cH[ebp]
    push        eax
    lea         ecx,-18H[ebp]
    lea         ebx,-14H[ebp]
    lea         edx,-19cH[ebp]
    mov         eax,dword ptr -24H[ebp]
    call        near ptr _splitpath2_
    mov         eax,dword ptr -20H[ebp]
    cmp         byte ptr [eax],0
    jne         L$41
    mov         dword ptr -20H[ebp],offset DGROUP:L$174
L$41:
    mov         eax,dword ptr -20H[ebp]
    push        eax
    mov         ecx,dword ptr -1cH[ebp]
    mov         ebx,dword ptr -18H[ebp]
    mov         edx,dword ptr -14H[ebp]
    lea         eax,-108H[ebp]
    call        near ptr _makepath_
    lea         eax,-108H[ebp]
    call        near ptr strlen_
    inc         eax
    call        near ptr AsmAlloc_
    mov         dword ptr DGROUP:L$205,eax
    lea         edx,-108H[ebp]
    mov         eax,dword ptr DGROUP:L$205
    call        near ptr strcpy_
    cmp         dword ptr DGROUP:L$207,0
    jne         L$42
    mov         dword ptr -20H[ebp],offset DGROUP:L$175
    mov         eax,dword ptr -20H[ebp]
    push        eax
    mov         ecx,dword ptr -1cH[ebp]
    xor         ebx,ebx
    xor         edx,edx
    lea         eax,-108H[ebp]
    call        near ptr _makepath_
    lea         eax,-108H[ebp]
    call        near ptr strlen_
    inc         eax
    call        near ptr AsmAlloc_
    mov         dword ptr DGROUP:L$207,eax
    lea         edx,-108H[ebp]
    mov         eax,dword ptr DGROUP:L$207
    call        near ptr strcpy_
L$42:
    cmp         dword ptr DGROUP:L$206,0
    jne         L$43
    mov         dword ptr -20H[ebp],offset DGROUP:L$176
    mov         eax,dword ptr -20H[ebp]
    push        eax
    mov         ecx,dword ptr -1cH[ebp]
    xor         ebx,ebx
    xor         edx,edx
    lea         eax,-108H[ebp]
    call        near ptr _makepath_
    lea         eax,-108H[ebp]
    call        near ptr strlen_
    inc         eax
    call        near ptr AsmAlloc_
    mov         dword ptr DGROUP:L$206,eax
    lea         edx,-108H[ebp]
    mov         eax,dword ptr DGROUP:L$206
    call        near ptr strcpy_
L$43:
    jmp         near ptr L$51
L$44:
    lea         eax,-20H[ebp]
    push        eax
    lea         eax,-1cH[ebp]
    push        eax
    lea         ecx,-18H[ebp]
    lea         ebx,-14H[ebp]
    lea         edx,-19cH[ebp]
    mov         eax,dword ptr -24H[ebp]
    call        near ptr _splitpath2_
    mov         eax,dword ptr -20H[ebp]
    cmp         byte ptr [eax],0
    jne         L$47

⌨️ 快捷键说明

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