C51编程:这是C51的一个BUG吗?
这是全局变量定义,定义了一个256字节的数组.
char pdata flash_buf[256];
根据定义,我修改了startup.asm中相关部分如下.
PPAGEENABLE EQU 1 ; set to 1 if pdata object are used.
PPAGE EQU 0 ; define PPAGE number.
PDATASTART EQU 0000H ; the absolute start-address of PDATA memory
PDATALEN EQU 256 ; the length of PDATA memory in bytes.
根据以上定义,xdata 的x:0000h~x:00ffh应该属于全局变量区,但我的程序运行就是不正常,
观察汇编代码,发现局部变量是从x:0000h开始定义的,对于不能通过寄存器传递的参数,参数
传递栈也从x:0000h开始,不知道是我的设置不正确还是keilC51的BUG,我想一个这么成熟的
产品不应该有这么大的漏洞吧,希望各位高手指点一二.
我的编译环境是 keilc7.0.
发表时间:2002年9月4日23:43:00