找回密码
 立即注册
查看: 510|回复: 6

Keil C51 全局变量名称的改变会影响编译后的程序校验和吗?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-29 11:47:19
已绑定手机

13

主题

31

回帖

287

积分

中级会员

积分
287
发表于 2024-9-18 10:55:30 | 显示全部楼层 |阅读模式
请教社友确认一个问题:全局变量名称的改变会影响编译后的程序校验和吗?

开始我理解的知识点是不会影响编译后的程序校验和的。网搜的答案也是如此如下图:
截图202409181041195277.jpg

但是,实际情况不是这样:全局变量名称的改变会影响编译后的程序校验和
比如:我只是为了可读性,做了如下变量名称改变,发现编译后的程序校验和变了:
g_CheckBatteryTimeCnt  改为   g_RtcCheckBatteryTimeCnt 后

校验和就从139FD7 变为了 139FD6 .

请英文好的的社友帮搜一下,有没有Keil C51官方关于这个问题的答案。


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:402
  • 最近打卡:2025-05-09 05:44:54

16

主题

702

回帖

1002

积分

金牌会员

积分
1002
发表于 2024-9-18 11:12:01 | 显示全部楼层
用比较工具比较一下生成的HEX文件,看看有啥区别
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:402
  • 最近打卡:2025-05-09 05:44:54

16

主题

702

回帖

1002

积分

金牌会员

积分
1002
发表于 2024-9-18 11:14:21 | 显示全部楼层
Beyond Compare 比较好用
截图202409181114194198.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-29 11:47:19
已绑定手机

13

主题

31

回帖

287

积分

中级会员

积分
287
发表于 2024-9-18 11:59:33 | 显示全部楼层
好,谢谢!找时间对比下,估计是变量存放的地址变了,校验码虽然不同了,但程序运行是正确的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-01 23:18:33

15

主题

139

回帖

987

积分

高级会员

积分
987
发表于 2024-9-18 14:14:10 | 显示全部楼层
程序就一个全局变量吗?
先逐个编译c文件,然后是链接,在这一步骤要对所有的变量和代码分配地址,如果改名导致变量表的顺序变化,自然分配地址也就不同。
应该是按字母顺序排列吧。
你可以再试试改名但不改变命名顺序,看hex是否会变化。
例如变量名加后缀,或者变量名称a,b,d改成a,c,d,中间那个变量b改成c,不会影响三个变量的顺序。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-29 11:47:19
已绑定手机

13

主题

31

回帖

287

积分

中级会员

积分
287
发表于 2024-9-18 15:42:28 | 显示全部楼层
hea*** 发表于 2024-9-18 14:14
程序就一个全局变量吗?
先逐个编译c文件,然后是链接,在这一步骤要对所有的变量和代码分配地址,如果改名 ...

分别试过三个全局变量名称的改变,每次只改变一个变量名称,其余(顺序)不动的,其中,2个校验和改变了,有一个无论改变怎样的名称,都不会影响校验和。在keil中查看到汇编语言的窗口,可以确定,校验和改变的原因就是变量存放的地址会变化了,按怎样的规律分配存放地址只有编译器知道了,因该不会是简单的字母顺序。

目前,暂时能确定的就是,C语言源程序代码的状态是确定的时候,编译出来的校验和是确定的,不会随机变,以上的问题就不理会了。只能依赖编译器了,相信keil C51的编译不会有问题。不可能回到用汇编语言编程序了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:475
  • 最近打卡:2025-05-09 08:29:10
已绑定手机

21

主题

113

回帖

770

积分

高级会员

积分
770
发表于 2024-12-27 09:57:30 | 显示全部楼层
可能是按变量名称顺序排序然后分配的,具体如何分配地址的建议咨询Keil总部,不要相信人工智障的回答。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-10 00:53 , Processed in 0.139566 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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