zhangzhonghua 发表于 2023-12-30 23:38:56

杨为民 发表于 2023-12-30 13:50
二论楼主10楼程序造假 楼主在59楼说:“1楼的程序,是没问题的,当时用函数名描述,是因为我匆忙且当时根 ...

二论这里的东西,你多次强调符合语法,编译通过。我只能回答,我只是简化、示意,是给人看的,人能基本正确理解就行,不是给机器去编译的,没必要抠了。

zhangzhonghua 发表于 2023-12-31 00:08:37

杨为民 发表于 2023-12-30 20:57
三论楼主38楼实验结果造假 (1)从11楼起到37楼,楼主和网友们交流了在C51编译器中用维护函数调用树的 ...

三论这里的东西,你研究得很细,我也是有疑惑的,但我只是开发产品的,问题解决完就得干别的事情去了,没能再深入去研究编译器的行为了。你能研究,我跟着看看。
今天晚了,只对其中1个问题讨论。
“消除了局部变量地址重叠的现象,那么第4行里data/xdata列的实验结果数字之一就一定会比第2行的大”。这个不对,为什么一定大?你认为是是重叠区 _XDATA_GROUP_ 一定大?我觉得不一定(对比了下MAP文件,重叠区 _XDATA_GROUP_ 长度一样)。这就牵涉到重叠区大小是怎么确定的问题。

zhangzhonghua 发表于 2023-12-31 09:06:13

杨为民 发表于 2023-12-30 10:54
楼主你是慌不择言吧?你说“我这边,实际程序就有这个问题,但这是商业程序,价值是2023元的10倍不止,不 ...

这里没有一个疑问是我看了想回复的。
不过,“你不知道C51编译器对C语言程序编译后输出的MAP文件中有每个函数局部变量的地址吗?两个局部变量地址是否相同直接就看出来了,还用得着仿真单步跟踪吗?”
这个倒是我之前没想到的,感谢这个反问式指点,学到了。

zhangzhonghua 发表于 2024-1-2 09:39:31

杨为民 发表于 2023-12-30 20:57
三论楼主38楼实验结果造假 (1)从11楼起到37楼,楼主和网友们交流了在C51编译器中用维护函数调用树的 ...

第5行的实验数据,我也是迷惑不解,但是没时间去研究了。

lao4jiadian 发表于 2024-11-3 23:09:56

看了2边,看看高手过招,我能不能学到一些有用的东西
页: 1 2 3 4 5 6 7 8 9 [10]
查看完整版本: 遇到局部变量被意外修改的问题,发现是编译器给2个局部变量分配了相同的地址?