我发现:
(1)在仿真状态下,没有赋值的全局变量,在进入main函数前,不会默认赋值为0;
(2)不在仿真状态下时,没有赋值的全局变量,在进入main函数前,会默认赋值为0;
按我的理解,c_int00()进行了一些初始化操作。28069在仿真状态下,在下载完程序后,程序直接跳转到了main()。
我试过进入仿真状态,手动跳转到c_int00(),执行完进入main后,发现没有赋值的全局变量,依旧没有没有自动赋值为0,。很是不理解。
请问,如何能在仿真状态下,跳转到c_int00()先执行?或者说,如何在仿真状态下,在进入main函数前,对没有赋值的全局变量,自动赋0值?
囧:
c_int00()就是一个跳转地址,你可以设定到main的位置,也可以不跳转到main到你bootloader的地方。变量在没初始化之前是一个随机值,建议你在使用前初始化呢一下。
我发现:
(1)在仿真状态下,没有赋值的全局变量,在进入main函数前,不会默认赋值为0;
(2)不在仿真状态下时,没有赋值的全局变量,在进入main函数前,会默认赋值为0;
按我的理解,c_int00()进行了一些初始化操作。28069在仿真状态下,在下载完程序后,程序直接跳转到了main()。
我试过进入仿真状态,手动跳转到c_int00(),执行完进入main后,发现没有赋值的全局变量,依旧没有没有自动赋值为0,。很是不理解。
请问,如何能在仿真状态下,跳转到c_int00()先执行?或者说,如何在仿真状态下,在进入main函数前,对没有赋值的全局变量,自动赋0值?
Johnson Chen1:
没有赋值的全局变量是指定义的不带初始值的变量吗?
如果是的话,你又希望这个变量初始化零的话,那么需要在程序中进行赋初值,或者将其定义为带初始值的变量。否则上电后,这些变量的内容是随机的。
下载完程序,CPU已经自动执行了c_int00(),你也可以点击RESET CPU, 如果这时候你仿真引导模式寄存器(EMU_KEY,EMU_BMODE)里值是对的,CPU会执行c_int00();
我发现:
(1)在仿真状态下,没有赋值的全局变量,在进入main函数前,不会默认赋值为0;
(2)不在仿真状态下时,没有赋值的全局变量,在进入main函数前,会默认赋值为0;
按我的理解,c_int00()进行了一些初始化操作。28069在仿真状态下,在下载完程序后,程序直接跳转到了main()。
我试过进入仿真状态,手动跳转到c_int00(),执行完进入main后,发现没有赋值的全局变量,依旧没有没有自动赋值为0,。很是不理解。
请问,如何能在仿真状态下,跳转到c_int00()先执行?或者说,如何在仿真状态下,在进入main函数前,对没有赋值的全局变量,自动赋0值?
xiang Lee1:
回复 Johnson Chen1:
没有赋值的全局变量是指定义的不带初始值的变量。比如:
int a;
我发现:
(1)要是不使用仿真器,这个没有赋值的全局变量在进到main时,就已经为0了。
(2)但是使用仿真器的时候,这个值是随机的。
我不理解这是为什么?
按C语言的语法,没有赋初值的全局变量,在进到main时,应该就是0值呀。