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 + -
显示快捷键?