操作系统编写,如何导入C语言,即处理堆栈指针sp的内容是和指针等一系列的问题?求汇编实现。引导层已写好。

目前我的理解:数据结构上,堆和栈是不同的数据结构,堆似乎是先进后出,栈不详。操作系统上的堆栈就是堆栈段啦,印象中局部变量放在这里,静态变量放哪里不详,全局变量放哪里不详,还有那些死的不会变的字符串放哪里也不祥。汇编语言里的堆栈一个是同样涉及堆栈段来存数据的情况,另一个就是比如一个函数执行完了,需要跳回到调用它的函数,就要pop啊,这里也有堆栈的事。C语言本身的堆栈,我不知道是什么啊,但是面试里被人问到了啊,联想起上学时学过的汇编语言、数据结构、C语言,还是不知道啊。
首先,在任何一个概念中,堆和栈是完全不同的两码事。数据结构中,:最小堆或者最大堆;栈:后进先出。操作系统上,只有栈的概念,没有堆的概念。栈用来记录过程调用、保存数据等。栈分内核栈和用户栈,用户栈就是下面3中所说的栈。编程语言层面(不管是汇编还是 C),栈是 esp 指向的内存区域,堆是程序 data 段的一部分。栈的作用还是「记录过程调用、保存数据」,堆的作用是保存栈中放不下的数据或者生命周期不固定的数据。堆是部分操作系统提供的特性,在 POSIX 中使用 sbrk / brk 系统调用实现。而栈是 CPU 提供的特性之一。其实这个问题太大了,每一条都可以拿出来说。
数据结构中栈,先进后出的一种结构,而堆指的是优先队列,带优先级的队列。&br&&br&c语言的堆栈,是指一个程序运行起来系统给分配的区域,总共5个,堆栈区,简称栈区,系统自动释放的区域。堆区,需要程序员自己手动开辟和释放(malloc,free)的区域。静态区(全局区)static。常量区(字符串常量等)。代码区。(这里指的是用户栈了)&br&&br&汇编语言中堆栈的作用当出现参数太多,寄存器不够用时,暂时存储到的地方。&br&&br&操作系统堆栈(系统栈)的作用主要是调用子程序时暂存断点地址和保护(恢复)现场数据。&br&&br&这几个堆栈说通俗作用基本上暂时存放数据和地址,保护现场和断点么,名字一样不是没原因的。&br&&br&c程序最终还不是要转化为汇编来执行。
数据结构中栈,先进后出的一种结构,而堆指的是优先队列,带优先级的队列。 c语言的堆栈,是指一个程序运行起来系统给分配的区域,总共5个,堆栈区,简称栈区,系统自动释放的区域。堆区,需要程序员自己手动开辟和释放(malloc,free)的区域。静态区(全…
在你说的四种场景中
堆和栈都是不同的东西
在你说的四种场景中 堆和栈都是不同的东西
已有帐号?
无法登录?
社交帐号登录在一个软件公司考了个c语言的题目,我对内存管理,堆栈处理,森林以及二叉树算法的c语言实现_百度知道一个奇怪的C语言问题,涉及到指针、数组、堆栈、以及printf,希望C语言大神们帮帮忙。_百度知道利用堆栈指针PUSH和POP编写一个C语言程序_百度知道操作系统编写,如何导入C语言,即处理堆栈和指针等一系列的问题?求汇编实现。引导层已写好。_百度知道

我要回帖

更多关于 堆栈指针sp 的文章

 

随机推荐