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

📄 start12.lst

📁 motorola dp256 的中断向量映射表
💻 LST
📖 第 1 页 / 共 2 页
字号:
  001b 270b         [3/1]   BEQ   *+13 ;abs = 0028
  219:  #ifdef FAR_DATA
  220:               PSHD                           ; save counter
  221:               LDAB  1,X+                     ; load destination page
  222:               LDY   2,X+                     ; destination address
  223:  #if defined(__HCS12X__)
  224:               STAB  __GPAGE_ADR__
  225:  #else  /* __HCS12X__ */
  226:               __PIC_JSR(_SET_PAGE)           ; sets the destinations page register
  227:  #endif /* __HCS12X__ */
  228:               PULD                           ; restore counter
  229:  #else  /* FAR_DATA */
  230:               LDY   2,X+                     ; load destination address
  001d ed31         [3]     LDY   2,X+
  231:  #endif /* FAR_DATA */
  232:  
  233:  #if defined(__HCS12X__) && defined(FAR_DATA)
  234:  #if defined(__OPTIMIZE_FOR_SIZE__)               /* -os, default */
  235:  Copy:        PSHA
  236:               LDAA  1,X+
  237:               GSTAA  1,Y+                    ; move a byte from ROM to the data area
  238:               PULA
  239:               __FEED_COP_IN_HLI()            ; feed the COP if necessary /*lint !e505 !e522 asm code */
  240:               DBNE  D,Copy                   ; copy-byte loop
  241:  #else
  242:               LSRD                           ; /2 and save bit 0 in the carry
  243:               BEQ    Copy1                   ; do we copy more than 1 byte?
  244:  
  245:  Copy:        PSHD
  246:               LDD   2,X+
  247:               GSTD  2,Y+                     ; move a word from ROM to the data area
  248:               PULD
  249:               __FEED_COP_IN_HLI()            ; feed the COP if necessary /*lint !e505 !e522 asm code */
  250:               DBNE  D,Copy                   ; copy-word loop
  251:  Copy1:
  252:               BCC   NextBlock                ; handle last byte?
  253:               LDAA  1,X+
  254:               GSTAA  1,Y+                    ; move a byte from ROM to the data area
  255:  #endif
  256:  #elif defined(__OPTIMIZE_FOR_SIZE__)               /* -os, default */
  257:  Copy:        MOVB  1,X+,1,Y+                ; move a byte from ROM to the data area
  001f 180a3070     [5]     MOVB  1,X+,1,Y+
  258:               __FEED_COP_IN_HLI()            ; feed the COP if necessary /*lint !e505 !e522 asm code */
  259:               DBNE  D,Copy                   ; copy-byte loop
  0023 0434f9       [3]     DBNE  D,*-4 ;abs = 001f
  260:  #else /* __OPTIMIZE_FOR_TIME__ */
  261:               LSRD                           ; /2 and save bit 0 in the carry
  262:               BEQ   Copy1                    ; do we copy more than 1 byte?
  263:  Copy:        MOVW  2,X+,2,Y+                ; move a word from ROM to the data area
  264:               __FEED_COP_IN_HLI()            ; feed the COP if necessary /*lint !e505 !e522 asm code */
  265:               DBNE  D,Copy                   ; copy-word loop
  266:  Copy1:
  267:               BCC   NextBlock                ; handle last byte?
  268:               MOVB  1,X+,1,Y+                ; copy the last byte
  269:  #endif /* __OPTIMIZE_FOR_SIZE__/__OPTIMIZE_FOR_TIME__ */
  270:               BRA   NextBlock
  0026 20f1         [3]     BRA   *-13 ;abs = 0019
  271:  funcInits:                                  ; call of global construtors is only in c++ necessary
  272:  #if defined(__cplusplus)
  273:  #if defined(__ELF_OBJECT_FILE_FORMAT__)
  274:  #if defined( __BANKED__) || defined(__LARGE__)
  275:               LDY   _startupData.nofInitBodies; load number of cpp.
  276:               BEQ   done                     ; if cppcount == 0, goto done
  277:               LDX   _startupData.initBodies  ; load address of first module to initialize
  278:  nextInit:
  279:               LEAX   3,X                     ; increment to next init
  280:               PSHX                           ; save address of next function to initialize
  281:               PSHY                           ; save cpp counter
  282:               CALL  [-3,X]                   ; use double indirect call to load the page register also
  283:               PULY                           ; restore cpp counter
  284:               PULX                           ; restore actual address
  285:               DEY                            ; decrement cpp counter
  286:               BNE    nextInit
  287:  #else  /* defined( __BANKED__) || defined(__LARGE__) */
  288:  
  289:               LDD   _startupData.nofInitBodies; load number of cpp.
  290:               BEQ   done                     ; if cppcount == 0, goto done
  291:               LDX   _startupData.initBodies  ; load address of first module to initialize
  292:  nextInit:
  293:               LDY   2,X+                     ; load address of first module to initialize
  294:               PSHD
  295:               PSHX                           ; save actual address
  296:               JSR   0,Y                      ; call initialization function
  297:               PULX                           ; restore actual address
  298:               PULD                           ; restore cpp counter
  299:               DBNE D, nextInit
  300:  #endif /* defined( __BANKED__) || defined(__LARGE__) */
  301:  #else /* __ELF_OBJECT_FILE_FORMAT__  */
  302:               LDX   _startupData.mInits      ; load address of first module to initialize
  303:  #if defined( __BANKED__) || defined(__LARGE__)
  304:  nextInit:    LDY   3,X+                     ; load address of initialization function
  305:               BEQ   done                     ; stop when address  == 0
  306:                                              ; in common environments the offset of a function is never 0, so this test could be avoided
  307:  #ifdef __InitFunctionsMayHaveOffset0__
  308:               BRCLR -1,X, done, 0xff         ; stop when address  == 0
  309:  #endif  /* __InitFunctionsMayHaveOffset0__ */
  310:               PSHX                           ; save address of next function to initialize
  311:               CALL  [-3,X]                   ; use double indirect call to load the page register also
  312:  #else  /* defined( __BANKED__) || defined(__LARGE__) */
  313:  nextInit:
  314:               LDY   2,X+                     ; load address of first module to initialize
  315:               BEQ   done                     ; stop when address of function == 0
  316:               PSHX                           ; save actual address
  317:               JSR   0,Y                      ; call initialization function
  318:  #endif /* defined( __BANKED__) || defined(__LARGE__) */
  319:               PULX                           ; restore actual address
  320:               BRA   nextInit
  321:  #endif  /* __ELF_OBJECT_FILE_FORMAT__  */
  322:  done:
  323:  #endif /* __cplusplus */
  324:     }
  325:  }
  0028 0a           [7]     RTC   
  326:  #endif /* __ONLY_INIT_SP */
  327:  
  328:  #if defined( __ELF_OBJECT_FILE_FORMAT__) && defined(__cplusplus ) && 0 /* the call to main does not support to return anymore */
  329:  
  330:  #if !defined(FAR_DATA) && (defined( __BANKED__) || defined(__LARGE__))
  331:  static void __far Fini(void)
  332:  #else
  333:  static void Fini(void)
  334:  #endif
  335:  {
  336:  /* purpose:     1) call global destructors in C++ */
  337:     __asm {
  338:  #if defined( __BANKED__) || defined(__LARGE__)
  339:  
  340:               LDY   _startupData.nofFiniBodies; load number of cpp.
  341:               BEQ   done                     ; if cppcount == 0, goto done
  342:               LDX   _startupData.finiBodies  ; load address of first module to finalize
  343:  nextInit2:
  344:               LEAX   3,X                     ; increment to next init
  345:               PSHX                           ; save address of next function to finalize
  346:               PSHY                           ; save cpp counter
  347:               CALL  [-3,X]                   ; use double indirect call to load the page register also
  348:               PULY                           ; restore cpp counter
  349:               PULX                           ; restore actual address
  350:               DEY                            ; decrement cpp counter
  351:               BNE    nextInit2
  352:  #else  /* defined( __BANKED__) || defined(__LARGE__) */
  353:  
  354:               LDD   _startupData.nofFiniBodies; load number of cpp.
  355:               BEQ   done                     ; if cppcount == 0, goto done
  356:               LDX   _startupData.finiBodies  ; load address of first module to finalize
  357:  nextInit2:
  358:               LDY   2,X+                     ; load address of first module to finalize
  359:               PSHD
  360:               PSHX                           ; save actual address
  361:               JSR   0,Y                      ; call finalize function
  362:               PULX                           ; restore actual address
  363:               PULD                           ; restore cpp counter
  364:               DBNE D, nextInit2
  365:  #endif /* defined(__BANKED__) || defined(__LARGE__) */
  366:  done:;
  367:     }
  368:  }
  369:  #endif
  370:  
  371:  
  372:  #include "non_bank.sgm"
  373:  
  374:  #pragma MESSAGE DISABLE C12053 /* Stack-pointer change not in debugging-information */
  375:  #pragma NO_FRAME
  376:  #pragma NO_ENTRY
  377:  #if !defined(__SMALL__)
  378:  #pragma NO_EXIT
  379:  #endif
  380:  
  381:  /* The function _Startup must be called in order to initialize global variables and to call main */
  382:  /* You can adapt this function or call it from your startup code to implement a different startup */
  383:  /* functionality. */
  384:  
  385:  /* You should also setup the needed IO registers as WINDEF (HC12A4 only) or the COP registers to run */
  386:  /* on hardware */
  387:  
  388:  /* to set the reset vector several ways are possible : */
  389:  /* 1. define the function with "interrupt 0" as done below in the first case */
  390:  /* 2. add the following line to your prm file : VECTOR ADDRESS 0xfffe _Startup */
  391:  /* of course, even more posibilities exists */
  392:  /* the reset vector must be set so that the application has a defined entry point */
  393:  
  394:  #if defined(__SET_RESET_VECTOR__)
  395:  __EXTERN_C void __interrupt 0 _Startup(void) {
  396:  #else
  397:  __EXTERN_C void _Startup(void) {

Function: _Startup
Source  : D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources\Start12.c
Options : -CPUHCS12 -D__NO_FLOAT__ -Env"GENPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\prm;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\cmd;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\lib;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\src;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"LIBPATH=D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"OBJPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Env"TEXTPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Lasm=%n.lst -Mb -ObjN="D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\9S12DP256_Vector_Remapping_Jul262006_Data\Full_Chip_Simulation\ObjectCode\Start12.c.o" -WmsgSd12053

  398:  #endif
  399:  /*  purpose:    1)  initialize the stack
  400:                  2)  initialize the RAM, copy down init data etc (Init)
  401:                  3)  call main;
  402:      parameters: NONE
  403:      called from: _PRESTART-code generated by the Linker
  404:                   or directly referenced by the reset vector */
  405:  
  406:     /* initialize the stack pointer */
  407:     INIT_SP_FROM_STARTUP_DESC(); /*lint !e522 asm code */ /* HLI macro definition in hidef.h */
  0000 cf0000       [2]     LDS   #__SEG_END_SSTACK
  408:  
  409:  #if defined(_HCS12_SERIALMON)
  410:     /* for Monitor based software remap the RAM & EEPROM to adhere
  411:        to EB386. Edit RAM and EEPROM sections in PRM file to match these. */
  412:     ___INITRG = 0x00;  /* lock registers block to 0x0000 */
  413:     ___INITRM = 0x39;  /* lock Ram to end at 0x3FFF */
  414:     ___INITEE = 0x09;  /* lock EEPROM block to end at 0x0fff */
  415:  #endif
  416:  
  417:     /* Here user defined code could be inserted, the stack could be used */
  418:  #if defined(_DO_DISABLE_COP_)
  419:     _DISABLE_COP();
  420:  #endif
  421:  
  422:     /* Example : Set up WinDef Register to allow Paging */
  423:  #ifdef HC812A4 /* HC12 A4 derivative needs WINDEF to configure which pages are available */
  424:  #if  (__ENABLE_EPAGE__ != 0 ||  __ENABLE_DPAGE__ != 0 || __ENABLE_PPAGE__ != 0)
  425:     WINDEF= __ENABLE_EPAGE__ | __ENABLE_DPAGE__  | __ENABLE_PPAGE__;
  426:  #endif
  427:  #endif
  428:  
  429:  #ifndef __ONLY_INIT_SP
  430:     Init(); /* zero out, copy down, call constructors */
  0003 4a000000     [7]     CALL  Init,PAGE(Init)
  431:  #endif
  432:  
  433:     /* Here user defined code could be inserted, all global variables are initilized */
  434:  #if defined(_DO_ENABLE_COP_)
  435:     _ENABLE_COP(1);
  436:  #endif
  437:  
  438:     /* call main() */
  439:     main();
  0007 4a000000     [7]     CALL  main,PAGE(main)
  440:  }
  441:  

⌨️ 快捷键说明

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