码迷,mamicode.com
首页 > 编程语言 > 详细

从汇编语言写到c语言

时间:2016-03-08 23:36:00      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

好了,言归正传,裸机程序没有操作系统的支持,想要用c语言,就只能先使用汇编语言手动配置c语言需要的环境,听起来很高大上,其实需要做的很简单:指定堆栈指针的值就好

   

那么完成这个简单的事情之前,先要明白c语言的栈的以下几个概念:

1. 空栈和满栈:这两个概念不是说的栈是空的还是满的,空栈是指栈指针指向的是栈顶元素的下一个地址。满栈指的是栈顶指针指的是栈顶元素。

 

2. 升栈和降栈:升栈就是栈向上生长,降栈就是栈向下生长。

 

注:arm是满降栈。

 

3. 栈帧:这个有必要好好理解一下,C语言中,每个栈帧对应着一个未运行完的函数。可以理解成像ucos那样:每个进程都有一段独立的栈空间,这段独立的空间就是栈帧。但是c语言中的栈帧是一个连着一个的,比如a函数调用b函数,那么b函数执行的时候,a函数的栈帧下面就是b函数的栈帧,b函数执行完,sp上移,完成出栈。

 

    如下图(main函数调用func1):所有栈帧串联起来,就是完整的栈。最新的栈帧上边界由FP指针确定,下边界由sp指针指定,其中LRSP分别指向这个栈帧对应的函数的调用者的栈帧的上下界。





从汇编语言写到c语言

标签:

原文地址:http://www.cnblogs.com/dchipnau/p/5255847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!