深入理解计算机体系结构第三章3.7

过程,包含三个部分:传递数据,传递控制,分配和释放内存。

过程P调用过程Q,首先把B过程的代码启始地址放入程序计数器里,执行B的指令,执行完把B的下一条指令放入程序计数器。

栈帧:当X86-64的过程需要的存储空间超过寄存器存放的大小时,会在栈上分配空间,这个空间称为栈帧。

如下图的函数调用时,栈帧的结构

P调用Q时,会把P的下一条地址即Q的返回地址压入p的栈帧,大多数栈帧都是定长的,P传递的数据会被放在寄存器里,最多6个整数值,参数再多,P只能在自己的栈帧里存储,然后通过,这6个数值进行间接访问,

原文地址:https://www.cnblogs.com/fengtuoAnddongyumeng/p/8810902.html

时间: 2024-10-10 18:24:10

深入理解计算机体系结构第三章3.7的相关文章

计算机操作系统第三章自测题-处理机调度与死锁

1.在单处理器的多进程系统中,进程什么时候占有处理器以及决定占用时间的长短是由(  )决定的. A.进程运行时间     B.进程的特点和进程调度策略 C.进程执行的代码 D.进程完成什么功能 进程调度的时机与进程特点有关,如进程是否为CPU繁忙型还是I/O繁忙型.自身的优先级等.但是仅这些特点是不够的,能否得到调度还取决于进程调度策略,若采用优先级调度算法,则进程的优先级才起作用.至于占用处理器运行时间的长短,则要看进程自身,若进程是I/O繁忙型,运行过程中要频繁访问I/O端口,也就是说,可能

深入理解计算机操作系统——第11章:全球IP地址

全球IP英特网 (1)每台英特网主机都运行实现TCPIP协议的软件. (2)英特网的客户端和服务器混合使用套接字接口函数和Unix IO函数来进行通信. (3)套接字函数典型的是作为陷入内核的系统调用来实现的,并调用各种内核模式的TCPIP函数. 13.3.1 IP地址

深入理解计算机操作系统——第3章:数组,异质的数据结构,指针

3.8 数组的分配和访问 (1)基本原则: int A[10] 首先,它在存储器中分配一个sizeof(int)*10字节的连续区域. 其次,它引入了标识符A.可以用A作为指向数组开头的指针.

深入理解java虚拟机-第三章

1.概述 2.对象已死吗? 引用计数器 给对象添加一个引用计数器,每当有引用时,计数器加1,引用失效时,计数器减1:任何时刻计数器为0的对象就是不可能再被使用的. 若对象是循环引用,则无法处理.JVM不使用. 可达性分析算法 通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所经过的路径称为引用链(Reference Chain),当一个对象没有任何引用链相连时,表明该对象不可用. Java语言中,可作为 GC Roots的对象包括如下: 虚拟机栈(栈帧中的本地变

深入理解计算机操作系统——第8章:进程控制

8.4 进程控制 8.4.1 获取进程ID (1)pid_t getpid(void)和pid_t gettpid(void)函数,其中返回的是pid_t整数值 (2)pid_t在types.h文件中被定义 8.4.2 创建和终止进程

深入理解计算机操作系统——第9章:缓存,存储器管理

9.3 虚拟存储器作为缓存工具 (1)虚拟存储器被组织为一个由存放在磁盘上的N个连续字节大小的单元组成的数组. (2)每个字节都有一个唯一的虚拟地址,作为数组索引 (3)磁盘上的内容被缓存到主存中 (4)磁盘上的数据被分割成块,作为磁盘与主存之间的传输单元 虚拟页: (1)VM系统将虚拟存储器分割为虚拟页的大小的固定块 (2)每个虚拟页的大小为P=2^p 物理页: (1)类似的物理存储器也被分割为物理页,大小也为P称为页帧 虚拟页面的集合: (1)未分配的:没有任何数据与它相关联,也就不占用任何

深入理解计算机操作系统——第8章:进程

进程: (1)进程的经典概念就是执行中的一个程序的实例. (2)系统中的每一个程序都是运行在进程的上下文中. (3)上下文:由程序正确运行所需的状态组成,这个状态包括:存放在存储器中的代码和数据,它的栈,通用目的寄存器, 程序计数器,环境变量,以及打开的文件描述符等等. 进程给程序提供的关键抽象: (1)独立的逻辑控制流:好像程序在运行时独占cpu处理器 (2)私有的地址空间:好像程序独占存储器一样. 逻辑控制流: 程序的运行时会有一系列的程序计数器(PC)的值,这些值唯一的对应着可执行程序的指

使用java理解程序逻辑 第三章 选择结构一

if 选择结构: if(条件){       代码块  //条件成立后要执行的代码.可以是一条语句,也可以是一组语句 } 可以处理单一或组合条件的情况. if-else 选择结构: if(条件){       代码块1 }else{       代码块2 } 可以处理简单的条件分支情况. 多重if选择结构: if(条件1){   代码1 }else  if(条件2){   代码2 }else{   代码3 } 可以处理连续区间的条件分支情况. 嵌套if选择结构: if(条件1){        

计算机漫游——第三章

数据格式 术语字(word)表示16位数据类型,32位数为双字(double words),64位数为四字(quad words).图3-1给出了c语言的数据类型在x86-64中的大小.在64位机器中标准int为双字,指针为8字.不通数据类型产生的汇编代码后缀如图所示.movb(传送字节).movw(传送字).movl(传送双字).movq(传送四字 C编译成汇编代码: gcc –O1 –S code.c  生成code.o二进制文件,再通过 objdump –d code.o 生成汇编代码文件