找回密码
 立即注册
楼主: lijun4545

难道STC32G不允许把变量定义到code段吗?

[复制链接]

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-7 11:12:48 | 显示全部楼层
LAO*** 发表于 2024-11-6 16:55
STC32G的DPTR指令,有点BUG。
INTEL标准是,读写XRAM指令,MOVX  @DPTR,A和MOVX  A,@DPTR
最高扩展地址位 ...

你这个说法是不对的,特意验证了MOVC  A,@A+DPTR指令执行是正确的,没有你说的这个问题,最高扩展位地址并不会选择DPXL

点评

上次我坛上反应过,要么现在内核修正了。 我这里的STC32G128开发板,测试出来是这个结论。  详情 回复 发表于 2024-11-7 11:46
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-7 11:46:49 | 显示全部楼层
zxcv*** 发表于 2024-11-7 11:12
你这个说法是不对的,特意验证了MOVC  A,@A+DPTR指令执行是正确的,没有你说的这个问题,最高扩展位地址 ...

上次我坛上反应过,要么现在内核修正了。
我这里的STC32G128开发板,测试出来是这个结论。
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-8 17:23:29 | 显示全部楼层
LAO*** 发表于 2024-11-7 11:46
上次我坛上反应过,要么现在内核修正了。
我这里的STC32G128开发板,测试出来是这个结论。 ...

要么是你那个错误表述有问题,要么是你测试方法有问题,我找了一个22年的beta版的STC32G12K128验证MOVC A,@A+DPTR指令执行也是正确的,不受DPXL的影响

点评

你可以试试,函数内定义一组CODE字符串数组,能否被正确读取  详情 回复 发表于 2024-11-8 17:38
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-8 17:38:13 | 显示全部楼层
zxcv*** 发表于 2024-11-8 17:23
要么是你那个错误表述有问题,要么是你测试方法有问题,我找了一个22年的beta版的STC32G12K128验证MOVC A ...

你可以试试,函数内定义一组CODE字符串数组,能否被正确读取
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-8 18:19:17 | 显示全部楼层
LAO*** 发表于 2024-11-8 17:38
你可以试试,函数内定义一组CODE字符串数组,能否被正确读取

那是编译器的问题,不是MOVC A,@A+DPTR指令的问题

点评

NO! 模拟调试正确!  详情 回复 发表于 2024-11-8 22:09
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-8 18:22:49 | 显示全部楼层
LAO*** 发表于 2024-11-8 17:38
你可以试试,函数内定义一组CODE字符串数组,能否被正确读取

或者你再试试函数内定义CODE字符串数组前面加上const,看看还能否被正确读取
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-8 22:09:52 | 显示全部楼层
zxcv*** 发表于 2024-11-8 18:19
那是编译器的问题,不是MOVC A,@A+DPTR指令的问题

NO!
模拟调试正确!
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-9 17:54:44 | 显示全部楼层
LAO*** 发表于 2024-11-8 22:09
NO!
模拟调试正确!

就这你就能断定是MOVC指令的问题?这个结论下的太武断了,至少要用汇编语言再确定一下。以前坛里有过讨论,函数内定义CODE数组,C251编译器会编译出写CODE区数组的指令,模拟肯定是可以的,但实际运行STC32不支持指令直接写CODE区

点评

好的,我确认一下  详情 回复 发表于 2024-11-10 17:31
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-10 17:31:54 | 显示全部楼层
zxcv*** 发表于 2024-11-9 17:54
就这你就能断定是MOVC指令的问题?这个结论下的太武断了,至少要用汇编语言再确定一下。以前坛里有过讨论 ...

好的,我确认一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-11-10 18:17:57 | 显示全部楼层
任何单片机,都不能把变量定义到code段,定义到code段的叫常量,属性只读,code段如果能随便写操作,那整个固件就不安全了。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:15 , Processed in 0.127227 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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