📄 c_int00.txt
字号:
CCS3.1启动代码分析:
0000:0174 c_int00 ;复位向量入口地址
0000:0174 F7BE SSBX CPL ;设置相对直接寻址译码器模式位
0000:0175 F6B9 RSBX OVM ;清除溢出模式位
0000:0176 F4A0 LD #0h,ARP ;清除辅助寄存器(AR)指针->AR0
0000:0177 F6B7 RSBX C16 ;清除双16位/双精度算术模式位
0000:0178 F6B5 RSBX CMPT ;清除修改模式位
0000:0179 F6B6 RSBX FRCT ;清除小数方式位
0000:017A F7B8 SSBX SXM ;设置符号扩展模式位,允许符号扩展
0000:017B 7718 STM 2700h,SP ;设置堆栈指针,注意下面的CMD文件
MEMORY
{
PAGE 0: VECS: origin=0xff80, length=0x80
PROG: origin=0x100, length=0x1600
PAGE 1: DATA: origin=0x2700, length=0x1880;注意这里的0x2700
}
0000:017D 6BF8 ADDM 3ffh,*(SP) ;设置堆栈大小为1K字
0000:0180 68F8 ANDM 0fffeh,*(SP) ;必须偶数地址对齐
0000:0183 F020 LD #22eh,0,A
0000:0185 F100 ADD #1h,0,A,B
0000:0187 F84D BC 1a0h,BEQ
0000:0189 F6B8 RSBX SXM ;设置符号扩展模式位,禁止符号扩展
0000:018A F495 NOP
0000:018B F020 LD #22eh,0,A
0000:018D F073 B 19ah
0000:018F 7EF8 READA *(AR2)
0000:0191 F000 ADD #1h,0,A,A
0000:0193 47F8 RPT *(AR1)
0000:0195 7E92 READA *AR2+
0000:0196 00F8 ADD *(AR1),A
0000:0198 F000 ADD #1h,0,A,A
0000:019A 7EF8 READA *(AR1)
0000:019C F000 ADD #1h,0,A,A
0000:019E 6C89 BANZ 18fh,*AR1-
0000:01A0 F7B8 SSBX SXM ;设置符号扩展模式位,允许符号扩展
0000:01A1 EEFC FRAME -4 ;压栈保护SP-=4
0000:01A2 F020 LD #0ffe5h,0,A
0000:01A4 F100 ADD #1h,0,A,B
0000:01A6 F84D BC 1b8h,BEQ
0000:01A8 F6B8 RSBX SXM ;设置符号扩展模式位,禁止符号扩展
0000:01A9 F495 NOP
0000:01AA F020 LD #0ffe5h,0,A
0000:01AC F273 BD 1b2h
0000:01AE 4E02 DST A,*SP(2h)
0000:01AF F495 NOP
0000:01B0 F5E3 CALA B
0000:01B1 5602 DLD *SP(2h),A
0000:01B2 7E00 READA *SP(0h)
0000:01B3 1100 LD *SP(0h),B
0000:01B4 FA4C BCD 1b0h,BNEQ
0000:01B6 6B03 ADDM 1h,*SP(3h)
0000:01B8 F6B8 RSBX SXM ;设置符号扩展模式位,禁止符号扩展
0000:01B9 EE04 FRAME 4 ;出栈恢复SP+=4
0000:01BA F074 CALL _args_main ;调用用户主程序
0000:01BC F074 CALL exit ;处理主程序异常退出
0000:01BE exit
0000:01BE 4A11 PSHM AR1
0000:01BF 4A16 PSHM AR6
0000:01C0 EEFF FRAME -1
0000:01C1 10F8 LD *(lock),A
0000:01C3 F4E3 CALA A
0000:01C4 7211 MVDM 2b03h,AR1
0000:01C6 10F8 LD *(AR1),A
0000:01C8 F845 BC 1d6h,AEQ
0000:01CA 4811 LDM AR1,A
0000:01CB F000 ADD #2b04h,0,A,A
0000:01CD 8816 STLM A,AR6
0000:01CE F495 NOP
0000:01CF F495 NOP
0000:01D0 10EE LD *+AR6(-1),A
0000:01D2 F4E3 CALA A
0000:01D3 6CE9 BANZ 1d0h,*+AR1(-1)
0000:01D6 10F8 LD *(dtors_ptr),A
0000:01D8 F845 BC 1ddh,AEQ
0000:01DA 10F8 LD *(dtors_ptr),A
0000:01DC F4E3 CALA A
0000:01DD 10F8 LD *(cleanup_ptr),A
0000:01DF F845 BC 1e4h,AEQ
0000:01E1 10F8 LD *(cleanup_ptr),A
0000:01E3 F4E3 CALA A
0000:01E4 10F8 LD *(unlock),A
0000:01E6 F4E3 CALA A
0000:01E7 F074 CALL abort
0000:01E9 F073 B 1e9h
0000:01EB atexit
0000:01EB 4A11 PSHM AR1
0000:01EC 8811 STLM A,AR1
0000:01ED 10F8 LD *(lock),A
0000:01EF F4E3 CALA A
0000:01F0 F7B8 SSBX SXM
0000:01F1 10F8 LD *(at_exit_count),A
0000:01F3 F468 SFTA A,8,A
0000:01F4 F478 SFTA A,-8,A
0000:01F5 F010 SUB #20h,0,A,A
0000:01F7 F843 BC 1ffh,ALT
0000:01F9 10F8 LD *(unlock),A
0000:01FB F4E3 CALA A
0000:01FC E801 LD #1h,A
0000:01FD F073 B 20bh
0000:01FF 7212 MVDM 2b03h,AR2
0000:0201 10F8 LD *(unlock),A
0000:0203 6BF8 ADDM 1h,*(at_exit_count)
0000:0206 70E2 MVKD 11h,*AR2(11012)
0000:0209 F4E3 CALA A
0000:020A E800 LD #0h,A
0000:020B 8A11 POPM AR1
0000:020C FC00 RET
0000:020D C$$EXIT, abort
0000:020D F495 NOP
0000:020E F073 B 20eh
0000:0210 _nop
0000:0210 FC00 RET
0000:0211 _register_lock
0000:0211 80F8 STL A,*(lock)
0000:0213 FC00 RET
0000:0214 _register_unlock
0000:0214 80F8 STL A,*(unlock)
0000:0216 FC00 RET
0000:0217 _args_main
0000:0217 4A11 PSHM AR1
0000:0218 7711 STM 0ffffh,AR1
0000:021A EEFE FRAME -2
0000:021B 6CE1 BANZ 222h,*AR1(1)
0000:021E F273 BD 228h
0000:0220 E800 LD #0h,A
0000:0221 E900 LD #0h,B
0000:0222 F120 LD #0ffffh,0,B
0000:0224 10F8 LD *(0ffffh),A
0000:0226 F300 ADD #1h,0,B,B
0000:0228 8100 STL B,*SP(0h)
0000:0229 F074 CALL main
0000:022B EE02 FRAME 2
0000:022C 8A11 POPM AR1
0000:022D FC00 RET
0000:022E ___cinit__, ___etext__, etext, cinit
0000:022E 0001 ADD *SP(1h),A
0000:022F 2B03 MACR *SP(3h),B
0000:0230 0000 ADD *SP(0h),A
0000:0231 0001 ADD *SP(1h),A
0000:0232 2B24 MACR *SP(24h),B
0000:0233 0000 ADD *SP(0h),A
0000:0234 0001 ADD *SP(1h),A
0000:0235 2B25 MACR *SP(25h),B
0000:0236 0000 ADD *SP(0h),A
0000:0237 0001 ADD *SP(1h),A
0000:0238 2B26 MACR *SP(26h),B
0000:0239 0210 ADDS *SP(10h),A
0000:023A 0001 ADD *SP(1h),A
0000:023B 2B27 MACR *SP(27h),B
0000:023C 0210 ADDS *SP(10h),A
0000:023D 0000 ADD *SP(0h),A
0000:0229 F074 CALL main
0000:022B EE02 FRAME 2
0000:022C 8A11 POPM AR1
0000:022D FC00 RET
0000:022E ___cinit__, ___etext__, etext, cinit
0000:022E 0001 ADD *SP(1h),A
0000:022F 2B03 MACR *SP(3h),B
0000:0230 0000 ADD *SP(0h),A
0000:0231 0001 ADD *SP(1h),A
0000:0232 2B24 MACR *SP(24h),B
0000:0233 0000 ADD *SP(0h),A
0000:0234 0001 ADD *SP(1h),A
0000:0235 2B25 MACR *SP(25h),B
0000:0236 0000 ADD *SP(0h),A
0000:0237 0001 ADD *SP(1h),A
0000:0238 2B26 MACR *SP(26h),B
0000:0239 0210 ADDS *SP(10h),A
0000:023A 0001 ADD *SP(1h),A
0000:023B 2B27 MACR *SP(27h),B
0000:023C 0210 ADDS *SP(10h),A
CCS2.2启动代码分析:
0000:019D _c_int00 ;复位向量入口地址
0000:019D 7718 STM 272fh,18h ;SP=0x2700 + 0x002f
;___bss__ =*0x2700=0x0000
;SystemRamTest =*0x2701=0x55aa
;Sys =*0x2702=0x55aa,0x0000,...,0x0000
;cleanup_ptr =*0x2724=0x0000
;__dtors_ptr =*0x2725=0x0000
;__lock =*0x2726=0x0260
;__unlock =*0x2727=0x0260,0x0000,0x0000,0x0001
;_nothrow_3std =*0x272b=0x0000
;_new_handle_fun_3std=*0x272c=0x04e2
;___end__ =*0x272d=0x0000
;TIMER0 =*0x272e=0x0024
MEMORY
{
PAGE 0: VECS: origin=0xff80, length=0x80
PROG: origin=0x100, length=0x1600
PAGE 1: DATA: origin=0x2700, length=0x1880;注意这里的0x2700
}
0000:019F 6BF8 ADDM 3ffh,*(18h) ;设置堆栈大小为1K字
0000:01A2 68F8 ANDM 0fffeh,*(18h) ;必须偶数地址对齐,SP=__Sys_memory
0000:01A5 F7B8 SSBX SXM ;设置符号扩展模式位,允许符号扩展
0000:01A6 F7BE SSBX CPL ;设置相对直接寻址译码器模式位
0000:01A7 F6B9 RSBX OVM ;清除溢出模式位
0000:01A8 F4A0 LD #0h,ARP ;清除辅助寄存器(AR)指针->AR0
0000:01A9 F6B7 RSBX C16 ;清除双16位/双精度算术模式位
0000:01AA F6B5 RSBX CMPT ;清除修改模式位
0000:01AB F6B6 RSBX FRCT ;清除小数方式位
0000:01AC F020 LD #522h,0,A ;A=0x522
0000:01AE F100 ADD #1h,0,A,B ;B=A+1=0x523
0000:01B0 F84D BC 1c9h,BEQ
0000:01B2 F6B8 RSBX SXM ;设置符号扩展模式位,禁止符号扩展
0000:01B3 F495 NOP
0000:01B4 F020 LD #522h,0,A
0000:01B6 F073 B 1c3h
0000:01B8 7EF8 READA *(12h) ;*(AR2)
0000:01BA F000 ADD #1h,0,A,A
0000:01BC 47F8 RPT *(11h)
0000:01BE 7E92 READA *AR2+
0000:01BF 00F8 ADD *(11h),A
0000:01C1 F000 ADD #1h,0,A,A
0000:01C3 7EF8 READA *(11h)
0000:01C5 F000 ADD #1h,0,A,A
0000:01C7 6C89 BANZ 1b8h,*AR1- ;继续循环
0000:01C9 F7B8 SSBX SXM ;设置符号扩展模式位,允许符号扩展
0000:01CA EEFC FRAME -4 ;压栈保护SP-=4
0000:01CB F020 LD #538h,0,A
0000:01CD F100 ADD #1h,0,A,B
0000:01CF F84D BC 1e1h,BEQ
0000:01D1 F6B8 RSBX SXM ;设置符号扩展模式位,禁止符号扩展
0000:01D2 F495 NOP
0000:01D3 F020 LD #538h,0,A
0000:01D5 F273 BD 1dbh
0000:01D7 4E02 DST A,2h
0000:01D8 F495 NOP
0000:01D9 F5E3 CALA B
0000:01DA 5602 DLD 2h,A
0000:01DB 7E00 READA edata
0000:01DC 1100 LD edata,B
0000:01DD FA4C BCD 1d9h,BNEQ
0000:01DF 6B03 ADDM 1h,3h
0000:01E1 F6B8 RSBX SXM ;设置符号扩展模式位,禁止符号扩展
0000:01E2 EE04 FRAME 4 ;出栈恢复SP+=4
0000:01E3 F074 CALL main ;调用用户主程序
0000:01E5 F074 CALL _exit ;处理主程序异常退出
0000:01E7 _exit
0000:01E7 4A11 PSHM 11h
0000:01E8 4A16 PSHM 16h
0000:01E9 EEFF FRAME -1
0000:01EA 10F8 LD *(__lock),A
0000:01EC F4E3 CALA A
0000:01ED 7211 MVDM 2703h,11h
0000:01EF 10F8 LD *(11h),A
0000:01F1 F845 BC 1ffh,AEQ
0000:01F3 4811 LDM 11h,A
0000:01F4 F000 ADD #2704h,0,A,A
0000:01F6 8816 STLM A,16h
0000:01F7 F495 NOP
0000:01F8 F495 NOP
0000:01F9 10EE LD *+AR6(-1),A
0000:01FB F4E3 CALA A
0000:01FC 6CE9 BANZ 1f9h,*+AR1(-1)
0000:01FF 10F8 LD *(__dtors_ptr),A
0000:0201 F845 BC 206h,AEQ
0000:0203 10F8 LD *(__dtors_ptr),A
0000:0205 F4E3 CALA A
0000:0206 10F8 LD *(__cleanup_ptr),A
0000:0208 F845 BC 20dh,AEQ
0000:020A 10F8 LD *(__cleanup_ptr),A
0000:020C F4E3 CALA A
0000:020D 10F8 LD *(__unlock),A
0000:020F F4E3 CALA A
0000:0210 F074 CALL C$$EXIT
0000:0212 EE01 FRAME 1
0000:0213 8A16 POPM 16h
0000:0214 8A11 POPM 11h
0000:0215 FC00 RET
0000:0216 _atexit
0000:0216 4A11 PSHM 11h
0000:0217 8811 STLM A,11h
0000:0218 10F8 LD *(__lock),A
0000:021A F4E3 CALA A
0000:021B F7B8 SSBX SXM
0000:021C E820 LD #20h,A
0000:021D 08F8 SUB *(2703h),A
0000:021F F846 BC 228h,AGT
0000:0221 10F8 LD *(__unlock),A
0000:0223 F4E3 CALA A
0000:0224 F273 BD 236h
0000:0226 F495 NOP
0000:0227 E801 LD #1h,A
0000:0228 7212 MVDM 2703h,12h
0000:022A 4812 LDM 12h,A
0000:022B F000 ADD #1h,0,A,A
0000:022D 80F8 STL A,*(2703h)
0000:022F 70E2 MVKD 11h,*AR2(9988)
0000:0232 10F8 LD *(__unlock),A
0000:0234 F4E3 CALA A
0000:0235 E800 LD #0h,A
0000:0236 8A11 POPM 11h
0000:0237 FC00 RET
0000:0238 C$$EXIT
0000:0238 F495 NOP
0000:0239 F073 B 239h
0000:023B ___nw__FUi
0000:023B 4A11 PSHM 11h
0000:023C 8811 STLM A,11h
0000:023D F495 NOP
0000:023E F495 NOP
0000:023F 6C81 BANZ 243h,*AR1
0000:0241 7711 STM 1h,11h
0000:0243 F274 CALLD _malloc
0000:0245 F495 NOP
0000:0246 4811 LDM 11h,A
0000:0247 8812 STLM A,12h
0000:0248 F495 NOP
0000:0249 F495 NOP
0000:024A 6C82 BANZ 25ch,*AR2
0000:024C 10F8 LD *(_new_handler_fun__3std),A
0000:024E F845 BC 25ch,AEQ
0000:0250 10F8 LD *(_new_handler_fun__3std),A
0000:0252 F4E3 CALA A
0000:0253 F274 CALLD _malloc
0000:0255 F495 NOP
0000:0256 4811 LDM 11h,A
0000:0257 8812 STLM A,12h
0000:0258 F495 NOP
0000:0259 4812 LDM 12h,A
0000:025A F845 BC 24ch,AEQ
0000:025C 8A11 POPM 11h
0000:025D FE00 RETD
0000:025E 4812 LDM 12h,A
0000:025F F495 NOP
0000:0260 __nop
0000:0260 FC00 RET
0000:0261 __register_lock
0000:0261 80F8 STL A,*(__lock)
0000:0263 FC00 RET
0000:0264 __register_unlock
0000:0264 80F8 STL A,*(__unlock)
0000:0266 FC00 RET
0000:0267 4A11 PSHM 11h
0000:0268 7211 MVDM 2728h,11h
0000:026A 8812 STLM A,12h
0000:026B 6C81 BANZ 271h,*AR1
0000:026D F273 BD 299h
0000:026F 7312 MVMD 12h,2728h
0000:0271 1182 LD *AR2,B
0000:0272 7713 STM 0h,13h
0000:0274 F7B8 SSBX SXM
0000:0275 10F8 LD *(0bh),A
0000:0277 0881 SUB *AR1,A
0000:0278 F842 BC 282h,AGEQ
0000:027A E713 MVMM AR1,AR3
0000:027B 71E1 MVDK *AR1(1),11h
0000:027E 6C81 BANZ 274h,*AR1
0000:0280 F073 B 296h
0000:0282 4811 LDM 11h,A
0000:0283 F845 BC 296h,AEQ
0000:0285 6C83 BANZ 28eh,*AR3
0000:0287 70E2 MVKD 2728h,*AR2(1)
0000:028A F273 BD 29ch
0000:028C 7312 MVMD 12h,2728h
0000:028E 70E2 MVKD 11h,*AR2(1)
0000:0291 70E3 MVKD 12h,*AR3(1)
0000:0294 F073 B 29ch
0000:0296 70E3 MVKD 12h,*AR3(1)
0000:0299 76E2 ST #0h,*AR2(1)
0000:029C 8A11 POPM 11h
0000:029D FC00 RET
0000:029E 4A11 PSHM 11h
0000:029F 8812 STLM A,12h
0000:02A0 7211 MVDM 2728h,11h
0000:02A2 4811 LDM 11h,A
0000:02A3 F845 BC 2c2h,AEQ
0000:02A5 E720 MVMM AR2,AR0
0000:02A6 F4A9 CMPR EQ,AR1
0000:02A7 F830 BC 2bdh,TC
0000:02A9 E713 MVMM AR1,AR3
0000:02AA 71E1 MVDK *AR1(1),11h
0000:02AD 4811 LDM 11h,A
0000:02AE F845 BC 2c2h,AEQ
0000:02B0 E720 MVMM AR2,AR0
0000:02B1 F7A9 CMPR NEQ,AR1
0000:02B2 F830 BC 2a9h,TC
0000:02B4 4813 LDM 13h,A
0000:02B5 F845 BC 2bdh,AEQ
0000:02B7 10E2 LD *AR2(1),A
0000:02B9 F273 BD 2c5h
0000:02BB 80E3 STL A,*AR3(1)
0000:02BD 71E2 MVDK *AR2(1),2728h
0000:02C0 F073 B 2c5h
0000:02C2 76F8 ST #0h,*(2728h)
0000:02C5 8A11 POPM 11h
0000:02C6 FC00 RET
0000:02C7 _minit
0000:02C7 4A11 PSHM 11h
0000:02C8 10F8 LD *(__lock),A
0000:02CA F4E3 CALA A
0000:02CB 7711 STM 2b2fh,11h
0000:02CD 61F8 BITF *(11h),1h
0000:02D0 76F8 ST #400h,*(2729h)
0000:02D3 F830 BC 2e2h,TC
0000:02D5 4811 LDM 11h,A
0000:02D6 7681 ST #0h,*AR1
0000:02D8 F000 ADD #1h,0,A,A
0000:02DA 6BF8 ADDM 0fffeh,*(2729h)
0000:02DD 8811 STLM A,11h
0000:02DE F273 BD 2eah
0000:02E0 7311 MVMD 11h,2728h
0000:02E2 7711 STM 2b2fh,11h
0000:02E4 4811 LDM 11h,A
0000:02E5 6BF8 ADDM 0ffffh,*(2729h)
0000:02E8 80F8 STL A,*(2728h)
0000:02EA 10F8 LD *(2729h),A
0000:02EC F484 NEG A,A
0000:02ED 8081 STL A,*AR1
0000:02EE 7211 MVDM 2728h,11h
0000:02F0 F495 NOP
0000:02F1 76E1 ST #0h,*AR1(1)
0000:02F4 10F8 LD *(__unlock),A
0000:02F6 F4E3 CALA A
0000:02F7 8A11 POPM 11h
0000:02F8 FC00 RET
0000:02F9 _malloc
0000:02F9 4A11 PSHM 11h
0000:02FA 4A16 PSHM 16h
0000:02FB 8816 STLM A,16h
0000:02FC EEFF FRAME -1
0000:02FD 10F8 LD *(__lock),A
0000:02FF F4E3 CALA A
0000:0300 10F8 LD *(272ah),A
0000:0302 F845 BC 309h,AEQ
0000:0304 F074 CALL _minit
0000:0306 76F8 ST #0h,*(272ah)
0000:0309 F7B8 SSBX SXM
0000:030A 4816 LDM 16h,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -