zxcv1973 发表于 2024-11-7 11:12:48

LAOXU 发表于 2024-11-6 16:55
STC32G的DPTR指令,有点BUG。
INTEL标准是,读写XRAM指令,MOVX@DPTR,A和MOVXA,@DPTR
最高扩展地址位 ...

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

LAOXU 发表于 2024-11-7 11:46:49

zxcv1973 发表于 2024-11-7 11:12
你这个说法是不对的,特意验证了MOVCA,@A+DPTR指令执行是正确的,没有你说的这个问题,最高扩展位地址 ...

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

zxcv1973 发表于 2024-11-8 17:23:29

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

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

LAOXU 发表于 2024-11-8 17:38:13

zxcv1973 发表于 2024-11-8 17:23
要么是你那个错误表述有问题,要么是你测试方法有问题,我找了一个22年的beta版的STC32G12K128验证MOVC A ...

你可以试试,函数内定义一组CODE字符串数组,能否被正确读取

zxcv1973 发表于 2024-11-8 18:19:17

LAOXU 发表于 2024-11-8 17:38
你可以试试,函数内定义一组CODE字符串数组,能否被正确读取

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

zxcv1973 发表于 2024-11-8 18:22:49

LAOXU 发表于 2024-11-8 17:38
你可以试试,函数内定义一组CODE字符串数组,能否被正确读取

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

LAOXU 发表于 2024-11-8 22:09:52

zxcv1973 发表于 2024-11-8 18:19
那是编译器的问题,不是MOVC A,@A+DPTR指令的问题

NO!
模拟调试正确!

zxcv1973 发表于 2024-11-9 17:54:44

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

LAOXU 发表于 2024-11-10 17:31:54

zxcv1973 发表于 2024-11-9 17:54
就这你就能断定是MOVC指令的问题?这个结论下的太武断了,至少要用汇编语言再确定一下。以前坛里有过讨论 ...

好的,我确认一下

晓飛飛 发表于 2024-11-10 18:17:57

任何单片机,都不能把变量定义到code段,定义到code段的叫常量,属性只读,code段如果能随便写操作,那整个固件就不安全了。
页: 1 [2] 3
查看完整版本: 难道STC32G不允许把变量定义到code段吗?