⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1.asm

📁 small c complier 它也Menuet OS的一个附件,同样他也是有汇编实现
💻 ASM
📖 第 1 页 / 共 5 页
字号:
LEA EAX,[EBP+12]
MOV EBX,EAX
MOV EAX, [EBX]
MOV EBX,EAX
MOV EAX,3
CALL __eq
OR EAX,EAX
JNE _1_103
JMP _1_102
_1_103:
XOR CL,CL
CALL _point
_1_102:
JMP _1_104
_1_94:
LEA EAX,[EBP-4]
PUSH EAX
MOV CL,1
CALL _constexp
ADD ESP,4
OR EAX,EAX
JNE _1_106
JMP _1_105
_1_106:
LEA EAX,[EBP+12]
MOV EBX,EAX
MOV EAX, [EBX]
MOV EBX,EAX
MOV EAX,3
CALL __eq
OR EAX,EAX
JNE _1_108
JMP _1_107
_1_108:
MOV EAX,_1_93+42
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
_1_107:
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
PUSH EAX
LEA EAX,[EBP+16]
MOV EBX,EAX
MOV EAX, [EBX]
PUSH EAX
MOV CL,2
CALL _stowlit
ADD ESP,8
LEA EAX,[EBP+8]
MOV EBX,EAX
MOV EAX, [EBX]
PUSH EAX
MOV EBX,EAX
MOV EAX, [EBX]
MOV EBX,EAX
MOV EAX,1
XCHG EAX,EBX
SUB EAX,EBX
POP EBX
MOV [EBX],EAX
_1_105:
_1_104:
MOV ESP,EBP
POP EBP
RET
_1_93 DB 109,117,115,116,32,97,115,115,105,103
 DB 110,32,116,111,32,99,104,97,114,32
 DB 112,111,105,110,116,101,114,32,111,114
 DB 32,99,104,97,114,32,97,114,114,97
 DB 121,0,99,97,110,110,111,116,32,97
 DB 115,115,105,103,110,32,116,111,32,112
 DB 111,105,110,116,101,114,0

_needsub:
PUSH EBP
MOV EBP,ESP
ADD ESP,-4
MOV EAX,_1_109+0
PUSH EAX
MOV CL,1
CALL _match
ADD ESP,4
OR EAX,EAX
JNE _1_111
JMP _1_110
_1_111:
XOR EAX,EAX
MOV ESP,EBP
POP EBP
RET
_1_110:
LEA EAX,[EBP-4]
PUSH EAX
MOV CL,1
CALL _constexp
ADD ESP,4
OR EAX,EAX
JE _1_113
JMP _1_112
_1_113:
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX,1
MOV [EBX],EAX
_1_112:
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
OR EAX,EAX
JL _1_115
JMP _1_114
_1_115:
MOV EAX,_1_109+2
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
LEA EAX,[EBP-4]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
NEG EAX
POP EBX
MOV [EBX],EAX
_1_114:
MOV EAX,_1_109+24
PUSH EAX
MOV CL,1
CALL _need
ADD ESP,4
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
MOV ESP,EBP
POP EBP
RET
_1_109 DB 93,0,110,101,103,97,116,105,118,101
 DB 32,115,105,122,101,32,105,108,108,101
 DB 103,97,108,0,93,0

_doinclud:
PUSH EBP
MOV EBP,ESP
ADD ESP,-36
XOR CL,CL
CALL _blanks
MOV EAX,[_lptr]
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
MOV EBX,EAX
MOV EAX,34
CALL __eq
OR EAX,EAX
JE _1_120
JMP _1_118
_1_120:
MOV EAX,[_lptr]
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
MOV EBX,EAX
MOV EAX,60
CALL __eq
OR EAX,EAX
JE _1_121
JMP _1_118
_1_121:
XOR EAX,EAX
JMP _1_119
_1_118:
MOV EAX,1
_1_119:
OR EAX,EAX
JNE _1_122
JMP _1_117
_1_122:
MOV EAX,[_lptr]
INC EAX
MOV DWORD [_lptr],EAX
_1_117:
LEA EAX,[EBP-4]
MOV EBX,EAX
XOR EAX,EAX
MOV [EBX],EAX
_1_123:
MOV EAX,[_lptr]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
OR EAX,EAX
JNE _1_127
JMP _1_125
_1_127:
MOV EAX,[_lptr]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
MOV EBX,EAX
MOV EAX,34
CALL __ne
OR EAX,EAX
JNE _1_128
JMP _1_125
_1_128:
MOV EAX,[_lptr]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
MOV EBX,EAX
MOV EAX,62
CALL __ne
OR EAX,EAX
JNE _1_129
JMP _1_125
_1_129:
MOV EAX,[_lptr]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
MOV EBX,EAX
MOV EAX,10
CALL __ne
OR EAX,EAX
JNE _1_130
JMP _1_125
_1_130:
MOV EAX,1
JMP _1_126
_1_125:
XOR EAX,EAX
_1_126:
OR EAX,EAX
JNE _1_131
JMP _1_124
_1_131:
LEA EAX,[EBP-36]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
PUSH EAX
MOV EAX,[_lptr]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
POP EBX
MOV [EBX],AL
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
INC EAX
MOV [EBX],EAX
JMP _1_123
_1_124:
LEA EAX,[EBP-36]
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
POP EBX
ADD EAX,EBX
MOV EBX,EAX
XOR EAX,EAX
MOV [EBX],AL
LEA EAX,[EBP-36]
PUSH EAX
MOV EAX,_1_116+0
PUSH EAX
MOV CL,2
CALL _OS_fopen
ADD ESP,8
MOV DWORD [_input2],EAX
OR EAX,EAX
JE _1_133
JMP _1_132
_1_133:
MOV EAX,-1
MOV DWORD [_input2],EAX
MOV EAX,_1_116+2
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
_1_132:
XOR CL,CL
CALL _kill
MOV ESP,EBP
POP EBP
RET
_1_116 DB 114,0,111,112,101,110,32,102,97,105
 DB 108,117,114,101,32,111,110,32,105,110
 DB 99,108,117,100,101,32,102,105,108,101
 DB 0

_dodefine:
PUSH EBP
MOV EBP,ESP
ADD ESP,-4
MOV EAX,_msname
PUSH EAX
MOV CL,1
CALL _symname
ADD ESP,4
OR EAX,EAX
JE _1_136
JMP _1_135
_1_136:
XOR CL,CL
CALL _illname
XOR CL,CL
CALL _kill
MOV ESP,EBP
POP EBP
RET
_1_135:
LEA EAX,[EBP-4]
MOV EBX,EAX
XOR EAX,EAX
MOV [EBX],EAX
MOV EAX,_msname
PUSH EAX
MOV EAX,[_macn]
PUSH EAX
MOV EAX,11
PUSH EAX
MOV EAX,[_macn]
MOV EBX,3300
ADD EAX,EBX
PUSH EAX
MOV EAX,300
PUSH EAX
XOR EAX,EAX
PUSH EAX
MOV CL,6
CALL _search
ADD ESP,24
OR EAX,EAX
JE _1_138
JMP _1_137
_1_138:
MOV EAX,[_cptr]
MOV DWORD [_cptr2],EAX
OR EAX,EAX
JNE _1_140
JMP _1_139
_1_140:
_1_141:
MOV EAX,[_cptr2]
INC EAX
MOV DWORD [_cptr2],EAX
DEC EAX
PUSH EAX
MOV EAX,_msname
PUSH EAX
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
INC EAX
MOV [EBX],EAX
DEC EAX
POP EBX
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
POP EBX
MOV [EBX],AL
OR EAX,EAX
JNE _1_143
JMP _1_142
_1_143:
JMP _1_141
_1_142:
JMP _1_144
_1_139:
MOV EAX,_1_134+0
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
MOV ESP,EBP
POP EBP
RET
_1_144:
_1_137:
MOV EAX,[_macptr]
PUSH EAX
MOV EAX,[_cptr]
MOV EBX,9
ADD EAX,EBX
PUSH EAX
MOV EAX,2
PUSH EAX
MOV CL,3
CALL _putint
ADD ESP,12
_1_145:
XOR CL,CL
CALL _white
OR EAX,EAX
JNE _1_147
JMP _1_146
_1_147:
XOR CL,CL
CALL _gch
JMP _1_145
_1_146:
_1_148:
XOR CL,CL
CALL _gch
PUSH EAX
MOV CL,1
CALL _putmac
ADD ESP,4
OR EAX,EAX
JNE _1_150
JMP _1_149
_1_150:
JMP _1_148
_1_149:
MOV EAX,[_macptr]
MOV EBX,EAX
MOV EAX,2099
CALL __ge
OR EAX,EAX
JNE _1_152
JMP _1_151
_1_152:
MOV EAX,_1_134+22
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
MOV EAX,7
PUSH EAX
MOV CL,1
CALL _OS_exit
ADD ESP,4
_1_151:
MOV ESP,EBP
POP EBP
RET
_1_134 DB 109,97,99,114,111,32,110,97,109,101
 DB 32,116,97,98,108,101,32,102,117,108
 DB 108,0,109,97,99,114,111,32,115,116
 DB 114,105,110,103,32,113,117,101,117,101
 DB 32,102,117,108,108,0

_putmac:
PUSH EBP
MOV EBP,ESP
MOV EAX,[_macq]
PUSH EAX
MOV EAX,[_macptr]
POP EBX
ADD EAX,EBX
PUSH EAX
LEA EAX,[EBP+8]
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
POP EBX
MOV [EBX],AL
MOV EAX,[_macptr]
MOV EBX,EAX
MOV EAX,2099
CALL __lt
OR EAX,EAX
JNE _1_155
JMP _1_154
_1_155:
MOV EAX,[_macptr]
INC EAX
MOV DWORD [_macptr],EAX
_1_154:
LEA EAX,[EBP+8]
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
POP EBP
RET

_dofuncti:
PUSH EBP
MOV EBP,ESP
ADD ESP,-4
XOR EAX,EAX
MOV DWORD [_litptr],EAX
MOV DWORD [_lastst],EAX
MOV DWORD [_noloc],EAX
MOV DWORD [_nogo],EAX
XOR CL,CL
CALL _getlabel
MOV DWORD [_litlab],EAX
MOV EAX,[_symtab]
MOV DWORD [_locptr],EAX
MOV EAX,_1_156+0
PUSH EAX
MOV CL,1
CALL _match
ADD ESP,4
OR EAX,EAX
JNE _1_158
JMP _1_157
_1_158:
XOR CL,CL
CALL _blanks
_1_157:
MOVSX EAX,BYTE [_monitor]
OR EAX,EAX
JNE _1_160
JMP _1_159
_1_160:
MOV EAX,[_line]
PUSH EAX
MOV EAX,__iob
MOV EBX,64
ADD EAX,EBX
PUSH EAX
MOV CL,2
CALL _lout
ADD ESP,8
_1_159:
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _symname
ADD ESP,4
OR EAX,EAX
JE _1_162
JMP _1_161
_1_162:
MOV EAX,_1_156+5
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
XOR EAX,EAX
MOV DWORD [_errflag],EAX
XOR CL,CL
CALL _kill
MOV ESP,EBP
POP EBP
RET
_1_161:
LEA EAX,[EBP-4]
PUSH EAX
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _findglb
ADD ESP,4
POP EBX
MOV [EBX],EAX
OR EAX,EAX
JNE _1_164
JMP _1_163
_1_164:
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
MOV EBX,2
ADD EAX,EBX
MOV EBX,EAX
MOVSX EAX,BYTE [EBX]
MOV EBX,EAX
MOV EAX,4
CALL __eq
OR EAX,EAX
JNE _1_166
JMP _1_165
_1_166:
LEA EAX,[EBP-4]
MOV EBX,EAX
MOV EAX, [EBX]
MOV EBX,2
ADD EAX,EBX
MOV EBX,EAX
MOV EAX,2
MOV [EBX],AL
JMP _1_167
_1_165:
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _multidef
ADD ESP,4
_1_167:
JMP _1_168
_1_163:
MOV EAX,_ssname
PUSH EAX
MOV EAX,4
PUSH EAX
MOV EAX,16
PUSH EAX
XOR EAX,EAX
PUSH EAX
XOR EAX,EAX
PUSH EAX
MOV EAX,_glbptr
PUSH EAX
MOV EAX,2
PUSH EAX
MOV CL,7
CALL _addsym
ADD ESP,28
_1_168:
MOV EAX,4
PUSH EAX
MOV CL,1
CALL _public
ADD ESP,4
XOR EAX,EAX
MOV DWORD [_argstk],EAX
MOV EAX,_1_156+37
PUSH EAX
MOV CL,1
CALL _match
ADD ESP,4
OR EAX,EAX
JE _1_170
JMP _1_169
_1_170:
MOV EAX,_1_156+39
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
_1_169:
_1_171:
MOV EAX,_1_156+53
PUSH EAX
MOV CL,1
CALL _match
ADD ESP,4
OR EAX,EAX
JE _1_173
JMP _1_172
_1_173:
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _symname
ADD ESP,4
OR EAX,EAX
JNE _1_175
JMP _1_174
_1_175:
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _findloc
ADD ESP,4
OR EAX,EAX
JNE _1_177
JMP _1_176
_1_177:
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _multidef
ADD ESP,4
JMP _1_178
_1_176:
MOV EAX,_ssname
PUSH EAX
XOR EAX,EAX
PUSH EAX
XOR EAX,EAX
PUSH EAX
XOR EAX,EAX
PUSH EAX
MOV EAX,[_argstk]
PUSH EAX
MOV EAX,_locptr
PUSH EAX
MOV EAX,1
PUSH EAX
MOV CL,7
CALL _addsym
ADD ESP,28
MOV EAX,[_argstk]
MOV EBX,4
ADD EAX,EBX
MOV DWORD [_argstk],EAX
_1_178:
JMP _1_179
_1_174:
MOV EAX,_1_156+55
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
XOR CL,CL
CALL _skip
_1_179:
XOR CL,CL
CALL _blanks
MOV EAX,[_lptr]
PUSH EAX
MOV EAX,_1_156+77
PUSH EAX
MOV CL,2
CALL _streq
ADD ESP,8
MOV EBX,EAX
XOR EAX,EAX
CALL __eq
OR EAX,EAX
JNE _1_183
JMP _1_181
_1_183:
MOV EAX,_1_156+79
PUSH EAX
MOV CL,1
CALL _match
ADD ESP,4
MOV EBX,EAX
XOR EAX,EAX
CALL __eq
OR EAX,EAX
JNE _1_184
JMP _1_181
_1_184:
MOV EAX,1
JMP _1_182
_1_181:
XOR EAX,EAX
_1_182:
OR EAX,EAX
JNE _1_185
JMP _1_180
_1_185:
MOV EAX,_1_156+81
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
_1_180:
XOR CL,CL
CALL _endst
OR EAX,EAX
JNE _1_187
JMP _1_186
_1_187:
JMP _1_172
_1_186:
JMP _1_171
_1_172:
XOR EAX,EAX
MOV DWORD [_csp],EAX
MOV EAX,[_argstk]
MOV EBX,4
ADD EAX,EBX
MOV DWORD [_argtop],EAX
_1_188:
MOV EAX,[_argstk]
OR EAX,EAX
JNE _1_190
JMP _1_189
_1_190:
MOV EAX,_1_156+90
PUSH EAX
MOV EAX,4
PUSH EAX
MOV CL,2
CALL _amatch
ADD ESP,8
OR EAX,EAX
JNE _1_192
JMP _1_191
_1_192:
MOV EAX,4
PUSH EAX
MOV CL,1
CALL _doargs
ADD ESP,4
XOR CL,CL
CALL _ns
JMP _1_193
_1_191:
MOV EAX,_1_156+95
PUSH EAX
MOV EAX,3
PUSH EAX
MOV CL,2
CALL _amatch
ADD ESP,8
OR EAX,EAX
JNE _1_195
JMP _1_194
_1_195:
MOV EAX,16
PUSH EAX
MOV CL,1
CALL _doargs
ADD ESP,4
XOR CL,CL
CALL _ns
JMP _1_196
_1_194:
MOV EAX,_1_156+99
PUSH EAX
MOV EAX,8
PUSH EAX
MOV CL,2
CALL _amatch
ADD ESP,8
OR EAX,EAX
JNE _1_198
JMP _1_197
_1_198:
MOV EAX,_1_156+108
PUSH EAX
MOV EAX,4
PUSH EAX
MOV CL,2
CALL _amatch
ADD ESP,8
OR EAX,EAX
JNE _1_200
JMP _1_199
_1_200:
MOV EAX,5
PUSH EAX
MOV CL,1
CALL _doargs
ADD ESP,4
XOR CL,CL
CALL _ns
JMP _1_201
_1_199:
MOV EAX,_1_156+113
PUSH EAX
MOV EAX,3
PUSH EAX
MOV CL,2
CALL _amatch
ADD ESP,8
MOV EAX,17
PUSH EAX
MOV CL,1
CALL _doargs
ADD ESP,4
XOR CL,CL
CALL _ns
_1_201:
JMP _1_202
_1_197:
MOV EAX,_1_156+117
PUSH EAX
MOV CL,1
CALL _error
ADD ESP,4
JMP _1_189
_1_202:
_1_196:
_1_193:
JMP _1_188
_1_189:
MOV EAX,18
PUSH EAX
XOR EAX,EAX
PUSH EAX
MOV CL,2
CALL _gen
ADD ESP,8
XOR CL,CL
CALL _statemen
MOV EAX,[_lastst]
MOV EBX,EAX
MOV EAX,3
CALL __ne
OR EAX,EAX
JNE _1_206
JMP _1_204
_1_206:
MOV EAX,[_lastst]
MOV EBX,EAX
MOV EAX,13
CALL __ne
OR EAX,EAX
JNE _1_207
JMP _1_204
_1_207:
MOV EAX,1
JMP _1_205
_1_204:
XOR EAX,EAX
_1_205:
OR EAX,EAX
JNE _1_208
JMP _1_203
_1_208:
MOV EAX,67
PUSH EAX
XOR EAX,EAX
PUSH EAX
MOV CL,2
CALL _gen
ADD ESP,8
_1_203:
MOV EAX,[_litptr]
OR EAX,EAX
JNE _1_210
JMP _1_209
_1_210:
MOV EAX,1
PUSH EAX
MOV CL,1
CALL _toseg
ADD ESP,4
MOV EAX,66
PUSH EAX
MOV EAX,[_litlab]
PUSH EAX
MOV CL,2
CALL _gen
ADD ESP,8
MOV EAX,1
PUSH EAX
MOV CL,1
CALL _dumplits
ADD ESP,4
_1_209:
MOV ESP,EBP
POP EBP
RET
_1_156 DB 118,111,105,100,0,105,108,108,101,103
 DB 97,108,32,102,117,110,99,116,105,111
 DB 110,32,111,114,32,100,101,99,108,97
 DB 114,97,116,105,111,110,0,40,0,110
 DB 111,32,111,112,101,110,32,112,97,114
 DB 101,110,0,41,0,105,108,108,101,103
 DB 97,108,32,97,114,103,117,109,101,110
 DB 116,32,110,97,109,101,0,41,0,44
 DB 0,110,111,32,99,111,109,109,97,0
 DB 99,104,97,114,0,105,110,116,0,117
 DB 110,115,105,103,110,101,100,0,99,104
 DB 97,114,0,105,110,116,0,119,114,111
 DB 110,103,32,110,117,109,98,101,114,32
 DB 111,102,32,97,114,103,117,109,101,110
 DB 116,115,0

_doargs:
PUSH EBP
MOV EBP,ESP
ADD ESP,-16
_1_212:
MOV EAX,[_argstk]
OR EAX,EAX
JE _1_215
JMP _1_214
_1_215:
MOV ESP,EBP
POP EBP
RET
_1_214:
LEA EAX,[EBP+8]
MOV EBX,EAX
MOV EAX, [EBX]
PUSH EAX
MOV EAX,3
PUSH EAX
LEA EAX,[EBP-4]
PUSH EAX
LEA EAX,[EBP-8]
PUSH EAX
MOV CL,4
CALL _decl
ADD ESP,16
OR EAX,EAX
JNE _1_217
JMP _1_216
_1_217:
LEA EAX,[EBP-16]
PUSH EAX
MOV EAX,_ssname
PUSH EAX
MOV CL,1
CALL _findloc

⌨️ 快捷键说明

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