start08.c里面初始化了sp,请问如何修改“__SEG_END_SSTACK”和长度
- UID
- 108380
- 性别
- 男
|
start08.c里面初始化了sp,请问如何修改“__SEG_END_SSTACK”和长度
请问如何修改“__SEG_END_SSTACK”和长度 |
能不用日货,尽量不用日货!
能不用日货,尽量不用日货!
能不用日货,尽量不用日货! |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
start08.c里面好象没有__SEG_END_SSTACK?
start08.c是Codewarrior的初始化文件,为什么要去修改?
你如果需要修改堆栈段和堆栈的长度的话可以在prm文件里面定义 |
|
|
|
|
|
- UID
- 108380
- 性别
- 男
|
谢谢!如何定义,请指教,我只看到了STACKSIZE,这个只能改长度,但是sp首地址如何改 |
能不用日货,尽量不用日货!
能不用日货,尽量不用日货!
能不用日货,尽量不用日货! |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 108380
- 性别
- 男
|
strongchen:请问,如何初始化,用哪个语句,比如我要实现0X50——>SP,在C里如何操作,请正面回答我好吗!求你了,大哥
[此贴子已经被作者于2005-4-28 21:26:07编辑过] |
能不用日货,尽量不用日货!
能不用日货,尽量不用日货!
能不用日货,尽量不用日货! |
|
|
|
|
|
- UID
- 106342
- 性别
- 男
|
SP的起始地址其实是PRM中定义的RAM(非零页地址)起始地址。它的运做是这样的。
在RAM开始的是你定义在其中的变量,变量是自动从最小地址排列到最大地址的,当然你也可以随意定义变量的物理地址(用@0x00??H),SP是从变量占用的最大地址开始计算,长度是由STACKSIZE指定。
所以如果你要改变SP的起始地址,可以将变量另定义一个区(不用DEFAULT RAM就行了),这样就可以了。即将默认变量、零页变量、SP分开定义到不同的地址区间就OK。 |
|
|
|
|
|
- UID
- 108380
- 性别
- 男
|
能不用日货,尽量不用日货!
能不用日货,尽量不用日货!
能不用日货,尽量不用日货! |
|
|
|
|
|
- UID
- 187540
- 性别
- 男
|
兄弟:能给我发个例子嘛??jimiko@tom.com
具体怎么分开啊! |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
RAM分成零页和非零页两块。如果不加说明,CodeWarrior的编译器会把全局变量都放入非零页中,因为它是DEFAULT_RAM(见PRM文件中)。堆栈也是放在非零页中的,紧跟在最后一个变量地址之后。如果要将变量放入零页地址,可以加上这样一句声明:
#pragma DATA_SEG MY_ZEROPAGE
其中MY_ZEROPAGE也是在PRM文件中定义的零页地址区。你可以看我上传的例子,在这个例子中,Ram_01放在零页中,而Ram_02放在非零页中。而且堆栈的大小也改为了0x60。
http://bbs.chinaecnet.com/uploadImages/gp32test.rar |
|
|
|
|
|
- UID
- 518123
- 性别
- 男
|
请问更改sp的长度和首地址有什么用途???????????请给予解答
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
SP的首地址是必须初时化的,因为复位缺省值可能并不是你所要的值。设置SP的长度可以让编译器知道你需要多大的SP空间,是否有足够的空间。 |
|
|
|
|
|