您好、欢迎来到现金彩票网!
当前位置:彩之网 > 状态栈 >

如何用C语言定义arm状态下的r13寄存器为堆栈指针

发布时间:2019-07-07 16:03 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部1,你如果用C语言编程的话,堆栈跟你见不着面,编译器会处理,何来定义堆栈之说?

  3,如果只用ARM汇编的话,在汇编代码里你可以随便用任何寄存器来充当堆栈的角色,无非就是在程序初始化时将哪个寄存器赋一个地址,然后你把这个寄存器当作栈指针寄存器,进行压栈和出栈操作时来改变或恢复这个寄存器的值,这样一来就完成了在汇编代码里的操作堆栈的功能。但是在汇编代码里最重要的是要能做到恢复现场,有一个寄存器没恢复的话整个程序就会出错,还有你不用SP的话就不能用PUSH和POP指令,直接操作你要拿来当堆栈指针的寄存器就OK。

  4,对于堆栈的理解问题,堆栈是一种抽象数据容器,即包括操作的数据结构,相当于C++中的类的概念,但还是有区别,无非就是划定一块内存区,定义任何数据想要在这块内存区存取都要遵守先进后出的规则,而INTEL和ARM的CPU架构里都有一个物理寄存器SP用来充当指向堆栈(你划定的那块内存区)的栈顶指针,在C语言里要实现堆栈这样的数据类型,就要用你定义的变量来充当栈顶指针,但在汇编里,就是SP了。

http://pepdeco.com/zhuangtaizhan/221.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有