精华内容
下载资源
问答
  • 堆栈概述堆栈的基本操作堆栈指针(SP)堆栈的管理方法 概述 大家,在工作的途中急急忙忙的新工作进入的时候,到那之前做的工作的内容暂时转移到别的地方,开始新的工作,对吧?当匆忙的新工作结束后,我会重新开始刚才...

    概述

    大家,在工作的途中急急忙忙的新工作进入的时候,到那之前做的工作的内容暂时转移到别的地方,开始新的工作,对吧?当匆忙的新工作结束后,我会重新开始刚才中断的原来的工作。此时,将“暂时转移原来的工作内容的地方”,在微型计算机的情况下称为“堆栈”。

    现在的工作是主例程,新的工作是“异常处理(中断等)”和“函数处理(子例程等)”。如果在执行主例程时发生“异常处理”等,则会中断主例程,但会将此时的寄存器和程序计数器的值等暂时保存到内存区域(通常是RAM)中(PUSH/推入)。这个存储区被称为“堆栈”或“堆栈区域”。然后,在返回主例程时,将“堆栈”的内容返回到原始寄存器(POP/流行)。

    指向“堆栈”在内存区域中的寄存器被称为“堆栈指针”。通常,“堆栈指针”指向RAM中“堆栈区域”的地址(见图1)。
    图1

    堆栈的基本操作

    在微型计算机的主例程执行过程中,如果发生异常处理(中断、错误等)或函数执行导致的子例程,则微型计算机会中断主例程,并暂时存储返回所需的信息,例如正在操作的寄存器的值和正在运行的程序计数器(以下简称PC)。它的存储位置被称为“堆栈”。堆栈需要使用快速可访问的内存,所以通常使用内置RAM。然后将表示保管地点的寄存器称为“堆栈指针(以下称为SP)”。SP通常包含存储位置的内置RAM的地址值。

    返回主例程所需的信息称为“上下文”,临时存储操作称为“PUSH(推/退)”。中断处理等结束后,微型计算机返回主例程时,恢复堆栈的内容。此操作称为“POP(流行/恢复,恢复)”。

    如果堆栈是能够高速访问的存储设备,则不需要特别是RAM,因此有些微型计算机使用寄存器组作为堆栈。

    堆栈指针(SP)

    首先,堆栈(Stack)是堆叠的意思。因此,微型计算机所说的堆栈就是一个接一个地积累和保存上下文。
    也就是说,当上下文存储在堆栈中时,它以从SP指示的地址顺序堆叠的图像存储。我说过“堆叠”,但在实际的微型计算机中,SP经常被减去,并存储在地址较少的方向上。

    与通用寄存器不同,SP被分类为特殊寄存器,例如PC和状态寄存器(通常称为CCR)。初始值由用户设置。配置方法可以通过软件进行,也可以通过硬件进行。什么方式设置取决于产品规格。

    硬件堆栈和软件堆栈

    当发生异常处理并堆叠上下文时,通常由硬件(中断控制器)执行。这被称为“硬件堆栈”。另一方面,当通过函数执行执行子例程时,软件使用PUSH指令将上下文保存在堆栈中,并在返回时使用POP指令进行POP。像这样使用软件进行堆栈的情况称为“软件堆栈”。

    展开全文
  • 中断的作用

    2008-12-08 21:53:00
    在执行系统调用过程中要将寄存器里保存到核心栈中,一方面是为了切换回到原来级别能恢复现场,也就是保存原来运行环境;另一方面也可以传递参数;所以对于每个进程都有自己对应内核堆栈。在执行int 0x80...
    怎么由用户态代码转变到内核态代码的执行?方式是通过中断,比如执行系统调用的时候是通过0x80,这种在很多书上又被称为trap。在执行系统调用的过程中要将寄存器里的保存到核心栈中,一方面是为了切换回到原来的级别时能恢复现场,也就是保存原来的运行环境;另一方面也可以传递参数;所以对于每个进程都有自己对应的内核堆栈。在执行int 0x80前,eax里放的就是系统调用号。gcc中的asmlinkage是告诉函数必须从堆栈中取参数,而不是从寄存器中取参数,我们会发现很多系统调用函数的实现都会有这种标志。因为在返回到用户态时会重置原来的寄存器值,所以如果要返回值的话(通常返回值会保存在eax中),系统调用就必须要替换堆栈中的eax所以经常会有这么一条汇编语句movl %eax,EAX(xxx)#save the return value。
    展开全文
  • 子程序调用和中断服务CPU自动将当前PC值压栈保存,返回自动将PC值弹栈。 保护现场/恢复现场 数据传输 单片机堆栈原理: 堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在...

    什么是单片机堆栈?
    在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。

    它的作用
    子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。
    保护现场/恢复现场
    数据传输

    单片机堆栈原理:
    堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。

    单片机堆栈是什么?它的原理和作用又是什么?

    堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。

    单片机堆栈是什么?它的原理和作用又是什么?

    堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。

    单片机堆栈是什么?它的原理和作用又是什么?

    展开全文
  • 在片内RAM中,常常要指定一个专门区域来存放某些特别数据,它遵循顺序存取和后进先出(LIFO/FILO)原则,这个RAM区叫堆栈。子程序调用和中断服务CPU自动将当前PC值压栈保存,返回自动将PC值弹栈。保护现场/...

    在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。

    1. 子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。

    2. 保护现场/恢复现场

    3. 数据搜索传输

    展开全文
  • 理解一下两个概念: 1;堆栈就是一段连续空间。用于存储数据,在c计算机中有很多应用,比如发生中断时保存现场,c语言...堆栈作用的就是用来保存局部变量,从实质上讲也就是将CPU寄存器值保存到RAM中。在uCOS中
  • 当我将我数组初始化为一个非常大值,如100万,它会中断,因为我正在为堆栈分配太大数组 . C中答案是使用类似于Sieve of Eratosthenesmalloc,但是这个解决方案在C中不起作用(据我所知) . 关于如何通过...
  • UCOS III 任务堆栈理解

    千次阅读 2018-04-23 17:06:16
    用于存储数据,在c计算机中有很多应用,比如发生中断时保存现场,c语言函数调用时保存现场和临时变量。2;堆栈指针就是一个数据指针。有时候计算机自己更改其指针指向位置来保存数据,如中断时,有时候我们...
  • 51单片机--堆栈

    千次阅读 2017-11-09 00:51:43
    堆栈的作用是用在调用子程序或中断程序保护现场,因为51单片机的寄存器是十分有限的,而相对来说普通数据存储器更充足,通过入栈将寄存器中的内容临时保存到堆栈中(普通数据存储器),这是一个用时间换取空间的...
  • 首先,我们来理解一下两个概念: 1、堆栈就是一段连续空间。用于存储数据,在c计算机中有很多应用,比如发生中断时保存现场,c语言...堆栈作用的就是用来保存局部变量,从实质上讲也就是将CPU寄存器值保存...
  • 中断和异常

    2015-09-08 11:14:15
    中断信号的作用. 使CPU转而去运行正常控制流之外的代码.为了它.就要在内核态堆栈保存程序计数器的当前值(eip和cs寄存器).并把与中断类型相关的一个地址放在程序计数器.中断处理与进程切换的差异:由中断或异常处理...
  • ST堆栈寄存器原理图

    2010-01-11 20:54:00
    ST堆栈寄存器原理图 ST堆栈寄存器的作用,是出现中断或子程序调用,保存断点处PC的值,以便中断或子程序结束,能继续执行原程序。其原理图见2-10。 图2-10 ST堆栈寄存器原理图 图中,信号STE
  • 4,中断和异常

    2014-05-15 10:02:00
    中断信号的作用. 使CPU转而去运行正常控制流之外的代码.为了它.就要在内核态堆栈保存程序计数器的当前值(eip和cs寄存器).并把与中断类型相关的一个地址放在程序计数器. 中断处理与进程切换的差异:由中断或异常处理...
  • 或由内核必须处理的异常条件产生异步中断:依照由其它硬件设备根据cpu的时钟信号随机产生,也成为中断中断信号的作用当一个中断信号到达,cpu必须停止当前正在做的事情,并切换新的活动,内核堆栈端保持程序计数器...
  • 1、中断的作用中断信号提供了一种方式,使处理器转而去运行正常控制流之外的代码。当一个中断信号到达,CPU必须停止它当前所做的事,并切换到一个新的活动。为了做到这一点,就要在内核态堆栈保存程序计数器的...
  • 第二节 操作系统是如何工作的 ...堆栈的作用 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 esp,堆栈指针,指向栈顶 ebp,基址指针,指向栈底,在C语言中用作记录当前函数调用基址。 ...
  • 1.单片机的最小系统?内部的主要结构?RAM和ROM的区别?单片机I/O口的功能和作用? 2.常见的时钟电路有哪些?为什么要使用PLL? 3.什么是时钟周期?机器周期?指令周期?...2. 看门狗分为软件看门狗...3. 学习堆栈的作用
  • 操作系统三大法宝

    2019-03-07 08:29:31
    操作系统的三大法宝 ...首先来看堆栈,堆栈是C语言程序运行必须使用的记录函数调用路径和参数存储的空间,堆栈的具体作用有:记录函数调用框架、传递函数参数、保存返回值的地址、提供函数内部局部...
  • 2.函数调用堆栈:堆栈是C语言程序运行必须使用的记录函数调用路径和参数存储的空间,堆栈的具体作用有:记录函数调用框架、传递函数参数、保存返回值的地址、提供函数内部局部变量的存储空间等。 3.中断机制:...
  • 堆栈堆栈是C语言程序运行必须使用几率函数条用路径和参数存储空间,具体作用分为:记录函数条用框架,传递函数参数,保存返回地址,提供函数内部局部变量存储空间等。 esp:是栈指针,是cpu机制决定...
  • 堆栈的作用是:记录函数调用框架、传递函数参数、保存返回值地址、提供函数内部局部变量的存储空间。函数调用堆栈就是由多个逻辑上的栈堆叠起来的框架。 3、中断机制。当一个中断信号发生,CPU把当时正在执行的...
  • 堆栈的具体作用有: 记录程序调用框架 传递函数参数 保存返回值地址 提供函数内部局部变量的存储空间 操作系统有2把宝剑:中断上下文、进程上下文 第3章 start_kernel中的最后一句为rest_init,内核启动完成后,...
  • 函数调用的作用:  ·用实参数向形式参数传递数据;  ·为获得数据参数及在函数体中声明的变量分配存储空间;  ·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调函数。 当参数表为空,表示该...
  • 为了验证标志组的作用,  读者可试着将其中的一个接收任务的OSFlagPost注释后观察。 6、Queue 为UCOS II消息队列的使用提供一个参考  任务AppTaskKeyScan每50ms扫描KEY2状态,若KEY2按键按下,  通过消息队列...
  • 操作系统是如何工作的 本章目标是在mykernel的基础上编写一个简单的内核 一、学习笔记 1.计算机的三个法宝:a....堆栈具体的作用: 记录函数调用框架 传递函数参数 保存返回值的地址 提供函数内部局部变量的存储...
  • 一、用户栈和内核栈的区别,为什么不用一个栈  操作系统中,每个进程会有会有两个栈,一个用户栈,一个内核栈,当进程在用户空间运行,CPU堆栈...内核栈的作用 保存中断现场,当进程由于中断进入内核态,系...
  • 在调用门、中断门与陷阱门中,一旦出现权限切换,就会有堆栈的切换。同时,由于CS的CPL发生改变,导致了SS也必须切换。 切换,会有新的ESP和SS(CS是由中断门或调用门指定),这两个值从哪里来的呢? 答案是TSS...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

中断时堆栈的作用