找回密码
 立即注册
楼主: zhangz***

遇到局部变量被意外修改的问题,发现是编译器给2个局部变量分配了相同的地址?

[复制链接]

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10969
发表于 2023-12-29 17:07:48 | 显示全部楼层
本帖最后由 杨为民 于 2023-12-29 17:11 编辑
zhangzhonghua 发表于 2023-12-29 14:07
对事不对人,这样的讨论,我无比欢迎,本着科学而严谨的态度,真理是越辩越明的。

1、1楼的程序,是没问 ...

哈哈哈哈,不打自招了吧

(1)楼主说:“1楼的程序,是没问题的,当时用函数名描述,是因为我匆忙且当时根本不知道函数名和函数指针的区别,所以10楼的程序改过来,用函数指针了。10楼的程序,才是有问题的。”
(2)大家看看,这是明明白白地招认
先在1楼用一个“是没问题的”的程序,造谣说“发现是编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”
然后才在10楼采用一个“才是有问题的”的程序来 为1楼构陷Keil的C51“编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”提供证据。
常言到:撒一个谎就接着要100个谎言来掩盖。楼主,你在59楼又撒谎了,请你向大家道歉!
楼主请你脚指头回答我:既然你1楼的程序没有问题,既然你“当时根本不知道函数名和函数指针的区别”
那么请问:你在1楼怎么会预先知道一天以后在10楼发生的事?
那么请问:你在1楼怎么会预先知道一天以后在10楼的结论?

那么请问:你在1楼怎么会预先知道一天以后在10楼的那个有问题的程序里面的那个地址是“// 到这里,发现 地址 0x0236 的内容被修改”
(3)我从没有见过如此厚颜无耻地蓄意栽赃陷害、造谣诋毁 Keil的C51编译器的事件,C51编译器绝不可能给2个具有调用关系的函数的2个局部变量分配了相同的地址!

回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10969
发表于 2023-12-29 17:30:59 | 显示全部楼层
本帖最后由 杨为民 于 2023-12-29 17:34 编辑
zhangzhonghua 发表于 2023-12-29 14:07
对事不对人,这样的讨论,我无比欢迎,本着科学而严谨的态度,真理是越辩越明的。

1、1楼的程序,是没问 ...

“1楼的程序,是没问题的,当时用函数名描述,是因为我匆忙且当时根本不知道函数名和函数指针的区别,所以10楼的程序改过来,用函数指针了。
10楼的程序,才是有问题的。”


哥们,你能在1楼用一个 没有问题的程序 就预先得出 一天以后才理解的 在10楼的 有问题的程序 的结论,并且把它预先写出来,然后理直气壮地问大家“怎么会这样?!怎么办?

而且连出问题的地址都一模一样,你真正是“天人”,具有未卜先知的能力
这是只有很烂的编剧才能编出的谎话, 你居然就在59楼大大方方地说了,你还要不要脸?

回复 支持 反对 送花

使用道具 举报

该用户从未签到

4

主题

52

回帖

160

积分

注册会员

积分
160
 楼主| 发表于 2023-12-29 18:18:33 | 显示全部楼层
本帖最后由 zhangzhonghua 于 2023-12-29 18:24 编辑

我47楼清清楚楚说明过程了的,怎么还有误会?再补充看看吧。

1、我的实际程序是类似10楼的,用了函数指针,发现调用函数和被调函数的局部变量地址相同,大惑不解。
2、在1楼发帖真心请教,但当时对函数名调用和函数指针调用有什么不同,是一无所知的,以为都是一样的,而且下班前匆忙,所以描述就用函数名调用了。
3、次日发现,奶咖君在3、4楼指出关键点(指针调用、Overlay、调用树),我就在10楼改正了描述,用函数指针调用。后面就是照着奶咖君指出的2个方法去翻箱倒柜了。
4、C51编译器怎么分配栈帧,怎么Overlay的,我在40楼和57楼应该算是充分描述了(知识都是从C51自带Help手册、并仔细对比每次修改的MAP文件变化学习到的)。
所以,“编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”这句话,如果这2个函数是通过指针调用的,是可能的,C51的Help手册都给出例子了,也是我实际遇到的。

点评

楼主:2个谎话要用200个谎话去圆,如果你有真实程序,请你马上亮出其中的段落来,如果没有,你就慢慢继续编谎话或者赶快编个莫须有的程序来圆你的谎话吧  详情 回复 发表于 2023-12-29 22:17
“所以,“编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”这句话,如果这2个函数是通过指针调用的,是可能的,C51的Help手册都给出例子了,也是我实际遇到的。” 别心虚,不要用手册做挡箭牌,你既  详情 回复 发表于 2023-12-29 22:00
1. 我的实际程序是类似10楼的,用了函数指针,发现调用函数和被调函数的局部变量地址相同,大惑不解。 2、在1楼发帖真心请教,但当时对函数名调用和函数指针调用有什么不同,是一无所知的,以为都是一样的,而且下班  详情 回复 发表于 2023-12-29 21:55
回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10969
发表于 2023-12-29 21:55:29 | 显示全部楼层
zhangzhonghua 发表于 2023-12-29 18:18
我47楼清清楚楚说明过程了的,怎么还有误会?再补充看看吧。

1、我的实际程序是类似10楼的,用了函数指针 ...

1. 我的实际程序是类似10楼的,用了函数指针,发现调用函数和被调函数的局部变量地址相同,大惑不解。
2、在1楼发帖真心请教,但当时对函数名调用和函数指针调用有什么不同,是一无所知的,以为都是一样的,而且下班前匆忙,所以描述就用函数名调用了



你的这段话是否是可以理解为
(1)你是先有了10楼的结果:根据10楼的程序,发现编译器给2个局部变量分配了相同的地址,就是“// 到这里,发现 地址 0x0236 的内容被修改”
(2)然后你就把10楼的结果复制到1楼,保留了“// 到这里,发现 地址 0x0236 的内容被修改”这些内容,不是未卜先知。
(3)所以你是根据10楼的程序才得出“编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”的结论的。


(4)楼主,你这次63楼的辩解是彻头彻尾的谎言!对于Keil的C51编译器,任何时候,包括用了函数指针,调用函数和被调函数的局部变量地址绝对不会相同
(5)请你不要再用“类似10楼的程序”这样语言来欺骗大家。这里是技术论坛,请你把你真实的相关的那几行程序亮出给大家看,否则你的这句“ 我的实际程序是类似10楼的,用了函数指针,发现调用函数和被调函数的局部变量地址相同,大惑不解。”话就是编造出来的,是对Keil的C51编译器的造谣诽谤

(6)如果你的10楼的程序也不是使你得出结论的程序,你又不肯拿出能够证明“编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”这个结论的相关程序,那么你就是以“莫须有”的程序来造谣,你必须向大家道歉!


回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10969
发表于 2023-12-29 22:00:34 | 显示全部楼层
zhangzhonghua 发表于 2023-12-29 18:18
我47楼清清楚楚说明过程了的,怎么还有误会?再补充看看吧。

1、我的实际程序是类似10楼的,用了函数指针 ...

“所以,“编译器给2个具有调用关系的函数的2个局部变量分配了相同的地址”这句话,如果这2个函数是通过指针调用的,是可能的,C51的Help手册都给出例子了,也是我实际遇到的。”

别心虚,不要用手册做挡箭牌,你既然说是“是我实际遇到的”,那么请把你的实际程序亮出来,否则你就是在造谣!

回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10969
发表于 2023-12-29 22:17:50 | 显示全部楼层
zhangzhonghua 发表于 2023-12-29 18:18
我47楼清清楚楚说明过程了的,怎么还有误会?再补充看看吧。

1、我的实际程序是类似10楼的,用了函数指针 ...


楼主:2个谎话要用200个谎话去圆,如果你有真实程序,请你马上亮出其中的段落来,如果没有,你就慢慢继续编谎话或者赶快编个莫须有的程序来圆你的谎话吧



回复 支持 反对 送花

使用道具 举报

该用户从未签到

4

主题

52

回帖

160

积分

注册会员

积分
160
 楼主| 发表于 2023-12-30 08:42:11 | 显示全部楼层
1、哎哟,本以为昨天下班前的再次补充够清楚了,没想到今早一看,误解还是存在。
有点意思了哈,好吧,我只能豁出去了。
2、但是光打嘴仗我没啥动力,要不玩点更刺激的,打个赌,赌注是2023元人民币。对于下面你的这句话,
“对于Keil的C51编译器,任何时候,包括用了函数指针,调用函数和被调函数的局部变量地址绝对不会相同”。
如果我能给个程序证明这句话是错的,我赢,你给我2023元人民币;如果我不能证明这句话是错的,你赢,我给你2023元人民币。
请大家作证,把微信收款码发这里,输者扫码付款。
怎么样,玩不玩?
3、我这边,实际程序就有这个问题,但这是商业程序,价值是2023元的10倍不止,不能放上来的;而且验证需要下载到我们产品上,按按键才能触发复现。
我可以想想怎么另外弄一个出来,但是这个地址重叠,我一直的说法都是“可能”,没说过"一定会",因为对编译器还是摸不清的,需要尝试,加上运气。
但我觉得有6成把握能赢,所以不妨赌一把。要是弄不出来证明不了,我也认了,愿赌服输。
另外就是编译选项要按我的实际程序那样,以便于复现,即:内存模式 Large, 编译器C51 代码优化级别8,链接器Lx51 不能使用NOOVERLAY关闭Overlay功能,不能使用OVERLAY维护调用树。
这个要作为打赌的条件,因为要是关闭Overlay功能,那肯定不会地址重叠,我必输无疑,那不公平。
4、因为放假,我等会就要出门了,可能晚上才能回来看情况。你先考虑考虑,敢不敢赌一把。
如果你同意,而且也有其他人站出来做见证,我们就算赌上了,看看元旦红包花落谁家。
怎么样,玩不玩?

点评

楼主你是慌不择言吧?你说“我这边,实际程序就有这个问题,但这是商业程序,价值是2023元的10倍不止,不能放上来的;而且验证需要下载到我们产品上,按按键才能触发复现。” (1)首先,谁要你亮全部程序,你就像1  详情 回复 发表于 2023-12-30 10:54
我昨天66楼的要求是“如果你有真实程序,请你马上亮出其中的段落来,如果没有,你就慢慢继续编谎话或者赶快编个莫须有的程序来圆你的谎话吧” 楼主你蠢啊!你看你67楼不是明明白白地告诉大家: 你没有真实程序,你  详情 回复 发表于 2023-12-30 10:13
“如果你同意,而且也有其他人站出来做见证,我们就算赌上了,看看元旦红包花落谁家。 怎么样,玩不玩?” 哈哈哈,我先回答你:我不同意!我不赌!我不跟你个骗子玩!  详情 回复 发表于 2023-12-30 09:57
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    19 小时前
  • 签到天数: 156 天

    [LV.7]常住居民III

    39

    主题

    894

    回帖

    4220

    积分

    荣誉版主

    积分
    4220
    发表于 2023-12-30 09:05:29 | 显示全部楼层
    “对于Keil的C51编译器,任何时候,包括用了函数指针,调用函数和被调函数的局部变量地址绝对不会相同”。

    =======================================================================


    这个赌注我跟注, 楼上算我一个,  杨教授稳输,  哈哈~~~

    大伙一起跟注 赚 新年 第一波 红包~~~

    点评

    (1)终于有懂行的发言了。如果要打赌,则把赌标准确地定义为: “对于Keil的C51编译器,只要不人为打开优化(优化等级=0)和不人为加入“OVERLAY”优化选项,那么,任何时候,包括用了函数指针,对于调用函数和被  详情 回复 发表于 2023-12-30 09:41
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    555

    主题

    9654

    回帖

    1万

    积分

    管理员

    积分
    14139
    发表于 2023-12-30 09:40:13 | 显示全部楼层
    截图202312300937458427.jpg
    向辉煌的 2024 迈进 !

    51世界火热的夏天 全面 进入 USB 时代 !
    RMB0.99 STC8H2K08U-45MHz-TSSOP20/SOP16,元旦送样
    硬件USB 支持 仿真/下载, RTC 实时时钟, 年/月/日/时/分/秒
    真12位ADC, 144MHz-16位高级PWM新增硬件移相功能

    串口1/串口2 支持硬件奇偶校验,支持串口超时硬件判断
    都支持帧错误数据检测自动地址识别
    T11,强大的24位定时器,也支持低功耗唤醒
    P1.2口在P5.4口上共享P1.0/P1.1的全部数字功能可以交换
    STC8H2K08U-45MHZ-TSSOP20/SOP16,RMB 0.99
    2023/12/28, 测试最新通报
    ===STC8H2K08U的USB测试正常稳定


    截图202312300939331071.jpg

    截图202312300939513142.jpg

    51世界火热的夏天 全面进入 USB 时代 !RMB0.99的 STC8H2K08U-45I-TSSOP20/SOP16 - 51 发烧友,UAC,极致音频,大国工匠,艺术人生,乐林漫步 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

    点评

    元旦快乐!预祝新的一年大家都有新发展  详情 回复 发表于 2023-12-30 10:01
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    66

    主题

    714

    回帖

    1万

    积分

    荣誉版主

    积分
    10969
    发表于 2023-12-30 09:41:17 | 显示全部楼层
    LAOXU 发表于 2023-12-30 09:05
    “对于Keil的C51编译器,任何时候,包括用了函数指针,调用函数和被调函数的局部变量地址绝对不会相同”。
    ...

    (1)终于有懂行的发言了。如果要打赌,则把赌标准确地定义为:

    “对于Keil的C51编译器,只要不人为打开优化(优化等级=0)和不人为加入“OVERLAY”优化选项,那么,任何时候,包括用了函数指针,对于调用函数和被调函数的局部变量地址,C51编译器自己绝对不会分配为相同的”。
    如何?
    (2)不改,你赢,改了,我赢。楼主但凡有你LAOXU这个知识,就不会那么明目张胆地造假了。
    (3)响应号召,不赌博,不诈骗。
    (4)大家继续吃瓜吧,新年快乐!
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-29 19:51 , Processed in 0.071056 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表