从汇编语言写到c语言

Posted DChipNau

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从汇编语言写到c语言相关的知识,希望对你有一定的参考价值。

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

   

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

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

 

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

 

注:arm是满降栈。

 

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

 

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





以上是关于从汇编语言写到c语言的主要内容,如果未能解决你的问题,请参考以下文章

C语言通讯录《信息写到文件版本》

E语言怎么把DLL文件加入进去,并且可以写到指定目录。

c语言选择排序中为啥一层for循环中要定义变量k,直接把交换那一步写到上面if语句中不行吗?

C语言关于文件的操作

用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符

VB 读取 CSV文件内容写到EXCEL里是内容是空的