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段如果能随便写操作,那整个固件就不安全了。