; BSSセグメントを0で埋める例 ; スタートアップルーチンに以下のルーチンを追加 ;--------------------------------------------------------------------- ; データセグメントのコピー ;--------------------------------------------------------------------- IF ((DEFD __YIDE_ROM__) || (DEFD __YIDE_ROM_DEBUG__) || (DEFD __YIDE_SIM_DEBUG__)) extern DATA_rom DATA_start DATA_end mov.l ??DATA_rom, r4 ; 転送元アドレス mov.l ??DATA_start, r5 ; 転送先アドレス mov.l ??DATA_end, r6 ; 転送先終了アドレス copy_loop: cmp/hi r6, r5 bt/s copy_end ;符号なしで比較 nop mov.b @r4, r7 mov.b r7, @r5 add #1, r4 add #1, r5 bra copy_loop nop copy_end: ENDIF ;********ここから追加********** ;BSSセグメントを0でうめる extern BSS_start BSS_end mov.l ??BSS_start, r5 ; 転送先アドレス mov.l ??BSS_end, r6 ; 転送先終了アドレス bss_init_loop: cmp/hi r6, r5 bt/s bss_init_loop_end ;符号なしで比較 nop mov.b #0, r7 mov.b r7, @r5 add #1, r5 bra bss_init_loop nop bss_init_loop_end: ; ; ; ; ; ; ; ; かなり下の方にありますが、以下の定義をみつけて ; 追加してください。 IF ((DEFD __YIDE_ROM__) || (DEFD __YIDE_ROM_DEBUG__) || (DEFD __YIDE_SIM_DEBUG__)) ??DATA_rom: dc.l DATA_rom ??DATA_start: dc.l DATA_start ??DATA_end: dc.l DATA_end ENDIF ??BSS_start: dc.l BSS_start;<--- 追加 ??BSS_end: dc.l BSS_end ;<--- 追加