1,ARM处理器在逻辑上共有多少个寄存器每个寄存器又有哪些功用

内核有37个,但是同一时刻只能用16个,具体作用随便找本ARM的书都有,R13 堆栈,R14 返回指针,R15 程序计数器,其他通用。其他内核外的寄存器是外部硬件决定的,要看芯片手册。
你好!不同型号的处理器是不一样的,根据你使用的ARM查手册希望对你有所帮助,望采纳。

ARM处理器在逻辑上共有多少个寄存器每个寄存器又有哪些功用

2,ARM中有多少个寄存器

ARM有37个32-Bit长的寄存器1个用作PC1个用作CPSR5个用作SPSR30个通用寄存器Cortex体系结构下有40个32-Bit长的寄存器多了Monitor模式人r13_mon,r14_mon,spsr_mon

ARM中有多少个寄存器

3,关于ARM编程中堆栈设置的问题

汇编和C不同。前者执行的时候并非要求一定要有个堆栈来帮忙,因为它可以直接访问寄存器,所以假如寄存器够用的话,它可以在需要使用堆栈的地方用寄存器来代替;C就不一样了,它的执行必须要求有一个堆栈。你知道的,每次C函数的调用,都会在堆栈里,产生一个stack frame。假如你觉得一个人学习比较痛苦,那你可以去逛逛网上的各大专业论坛。当然,也可以参与我们JulianTec为大家学习准备好的 Mail list。你可以搜一下,我们觉得这个比论坛更有效率。

关于ARM编程中堆栈设置的问题

4,arm中 堆栈和堆栈指针什么意思我是菜鸟 不要喷我感谢啦不要复制哦

堆栈是在内存中开辟的一段特殊的存储空间,它可以实现数据的先入后出,用于保护中断时的中断现场。堆栈指针和其他指针一样,只是它指向的是堆栈地址。它始终指向栈底(这个你参考一下微机原理与汇编语言里相关内容就很好理解了)。如你往杯子装水,杯子空的时候,指针指在杯底,你往杯子装一些水后,指针自动指到水面上,倒水时是上面的先倒出。堆栈指针道理差不多。注意也有益处这个说法

5,在arm规定的堆栈中多寄存器入栈的顺序是怎样的

我只知道参数传递时最后的参数被压到栈底,也就是寄存器的压入顺序!
设堆栈指针r13初始值为#0x50,则: stm指令执行完后堆栈指针r13=( 0x60 )。请在图中标出stm指令执行完后堆栈段的数据存放情况。 ldm指令执行完后堆栈指针r13=( 0x50 ),各寄存器的值分别为: (r1)=( 0x11 ) ,(r2)=( 0x22 ) ,(r3)=( 0x33 ) ,(r4)=( 0x44 ) ,(r5)=( 0x55 )

6,ARM处理器支持4种堆栈操作方式请高手解释一下这四种栈分别是什么意思

有4中类型的堆栈表示递增和递减的满堆栈和空堆栈的各种组合。满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA,STMFA等。空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA,STMEA等。满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD,STMFD等。空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。指令如LDMED,STMED等。链接地址:http://hi.baidu.com/trical/item/585a24087f9b1a036c9048f0

7,关于arm中堆栈中暂存局部变量是如何存取的问题

静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值(也就是说,如果item是static的,那么只有在第一次进入这个函数的时候会执行item=0,以后都不会执行。)。
两个的区别是sp指针指向的位置不一样。sp指针要指到ram的地址。查查你用的控制器,片内ram的映射地址是多少,一般片内ram的最高地址作为sp指针的初始地址。

8,在ARM规定的堆栈中多寄存器入栈的顺序是什么

设堆栈指针R13初始值为#0x50,则: STM指令执行完后堆栈指针R13=( 0x60 )。请在图中标出STM指令执行完后堆栈段的数据存放情况。 LDM指令执行完后堆栈指针R13=( 0x50 ),各寄存器的值分别为: (R1)=( 0x11 ) ,(R2)=( 0x22 ) ,(R3)=( 0x33 ) ,(R4)=( 0x44 ) ,(R5)=( 0x55 )
我只知道参数传递时最后的参数被压到栈底,也就是寄存器的压入顺序!

9,ARM出栈入栈题纠结啊了一晚上都没有弄明白求高手指教 问

设堆栈指针R13初始值为#0x50,则:STM指令执行完后堆栈指针R13=( 0x60 )。请在图中标出STM指令执行完后堆栈段的数据存放情况。LDM指令执行完后堆栈指针R13=( 0x50 ),各寄存器的值分别为:(R1)=( 0x11 ) ,(R2)=( 0x22 ) ,(R3)=( 0x33 ) ,(R4)=( 0x44 ) ,(R5)=( 0x55 )
你好!STM指令执行完后堆栈指针R13=(0x60) 其他的都正确 你可以用ads1.2仿真一下就清楚了.仅代表个人观点,不喜勿喷,谢谢。
arm7 建议选择,你从现在最容易找到的资源入手,比如你可以搞到ARM9的实验开发板,你就从ARM9入手.学好一个,另一个就基本上没有问题了.两者差异并不

10,ARM关于栈的简单问题请教

从你这个代码来看,__user_initial_stackheap并不是设置栈,而是把堆和栈的起始地址作为返回值,返回到C语言空间。 Startup.s 开始处设置栈地址是必须的,至于用户程序运行起来后,可能会起操作系统,栈地址可能会发生变化
楼主理解有偏差,arm工作在不同的模式下有不同的栈,和C语言不C语言没有什么关系,工作在用户模式下有用户模式的栈,进入异常模式有异常模式的栈,你所理解的C语言程序的栈,主要看这段程序是运行在什么模式下,就会用到该模式的栈空间
从__user_initial_stackheap返回的值,指定了STACK和HEAP的地址范围,编译在进行储存分配的时候,保证不会超过,但它并不进行各种模式下的SP的初始化.而Startup.s则完成这些SP的初始化,这两个都是必不可少的.
那么ARM上运行C程序时,用户模式下的栈和C程序中的栈有什么关系,有什么区别?---------------------用户模式下的栈,这个是硬件提供的功能C程序中的栈,这个是软件的使用方式用户模式下和管理模式下,都会提供栈,这个是硬件的功能,软件通过硬件的SP指针来使用这个功能C程序中的栈,就是在C程序下如何使用栈,C程序可以使用用户模式的栈,也可以使用管理模式的栈,这就是你要问的关系和区别
不太懂啊,得慢慢学习啊,知道有这回事,不太懂如何操作啊
每个模式有自己的栈,进入模式时自动切换相应的堆栈指针就这样

文章TAG:arm中有多少堆栈中有  多少  堆栈  
下一篇