欢迎来到天天文库
浏览记录
ID:58446246
大小:13.00 KB
页数:2页
时间:2020-09-03
《工作随记之——ARM内存,程序空间及堆栈操作.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ARM内存,程序空间及堆栈操作1.ARM内存可任意读写,程序空间只可读不可写,不然会出现硬件错误。(注意:在使用指针时,一定要分配空间,不然也会进入硬件异常)unsignedintaddr,temp,*data;data=&temp;//重要addr=0x;//地址可以是内存、程序空间、可读寄存器*data=*(unsignedint*)addr;*(unsignedint*)addr=*data;//适用于内存、可写寄存器,不可对程序空间进行此操作2.内存堆栈的设置。堆:程序执行后申请的内存空
2、间。栈:一般用作函数调用时,把返回信息压入栈中,函数执行完成后恢复现场。(注意:在函数中使用变量,会消耗栈的空间,而不是堆的空间。所以要合理设置变量跟栈空间大小。)采用分散加载文件方式设置堆栈空间大小HEAP+0x0UNINIT//紧跟在程序初始化变量后面,最大空间利用。向上增长{stack.o(heap)}STACK0xUNINIT//内存的最高地址。最后空间利用。向下增长(LPC1766){stack.o(stack)}heap.sstack.s文件:IMPORT__use_two_regi
3、on_memoryEXPORT__user_initial_stackheapAREAstack,DATA,NOINITuser_stack;SPACE0X1000AREAHeap,DATA,NOINITbottom_of_heap;SPACE0X4000AREArt_heap_stack,CODE,READONLYENTRY__user_initial_stackheap;单区LDRR0,=bottom_of_heap;堆基地址LDRR1,=user_stack;栈基地址(内存最高地址,向下增
4、长)LDRR2,=user_stack;堆极限地址LDRR3,=bottom_of_heap;栈极限地址BXLRALIGN;对齐END
此文档下载收益归作者所有