对烧写文件进行了整理,最后发现不能正常执行。经调试检查,发现
如果BSS 段的长度为0, 则crt0.s的以下部分程序执行会出错。
因为D1为0,因此,执行完SUBQ.L #1,D1 后D1会变为全F,就会一直在此循环。
//MOVE.L #_clean1,A1
//MOVE.L #_size,D1
//LSR.L #2,D1
//LOOP CLR.L (A1)+
//SUBQ.L #1,D1
//BNE LOOP
为解决此问题,在main.c中定义了变量int i,使得BSS 段的长度不为0。