; BSSセグメントを0で埋める例 ; スタートアップルーチンに以下のルーチンを追加 ;-------------------------------------------------------------------- ; DATAセグメントをROMからRAMにコピーする ;-------------------------------------------------------------------- IF ((DEFD __YIDE_ROM__) || (DEFD __YIDE_ROM_DEBUG__) || (DEFD __YIDE_SIM_DEBUG__)) EXTERN DATA_rom DATA_start DATA_size MOV.L #DATA_rom, ER0 ; コピー元アドレス MOV.L #DATA_start, ER1 ; コピー先アドレス MOV.L #DATA_size, ER2 ; コピーサイズ copy_loop: CMP.L #0,ER2 BEQ copy_loop_end MOV.B @ER0+, R3L MOV.B R3L, @ER1 INC.L #1, ER1 DEC.L #1, ER2 BRA copy_loop copy_loop_end: ENDIF ;==============ここから追加================== ;BSSセグメントを0でうめる EXTERN BSS_start BSS_size MOV.L #BSS_start, ER1 ; 転送先アドレス MOV.L #BSS_size, ER2 ; 転送サイズ bss_init_loop: CMP.L #0,ER2 BEQ bss_init_loop_end MOV.B #0, R3L MOV.B R3L, @ER1 INC.L #1, ER1 DEC.L #1, ER2 BRA bss_init_loop bss_init_loop_end: