首页 > 其他分享 >计算机系统2

计算机系统2

时间:2023-06-21 12:23:39浏览次数:46  
标签:计算机系统 存储 调用者 数据类型 随机化 地址 对齐

3. 程序的机器级表示

汇编指令

3.7 过程(函数调用)

函数调用与返回

  1. 把调用语句的下一条语句地址压入栈
  2. 执行完被调用函数后从栈中弹出该地址返回函数继续执行

参数传递:
1-6个参数用固定寄存器

其余用栈传递:
栈存储:所有数据大小为8的倍数
栈顶返回地址
局部变量也在栈中,但是不需要对齐;传递参数必须对齐 关于对齐规则 add
每个参数实际大小由自身变量类型决定,具体位置根据大端/小端存储法来定。

调用者/被调用者保存寄存器
递归调用:栈溢出

3.8 数组的分配和访问

根据数据类型来定,行优先

3.9 结构体联合体

结构体对齐
地址对齐:任何 \(k\) 字节的基本对象的地址必须是 \(k\) 的倍数
末端也会对齐(为了下一次的起始地址合理,结构体占的总字节数为4的倍数

指针都是8字节!!!!

联合体 \(Union\) 大小:最大字段的大小
用处:访问不同数据类型的位模式(一种类型存储,另一种类型访问)

3.10 缓冲区溢出

越界,限定范围

栈随机化

栈的位置每次运行都变
地址空间布局随机化 \(ASLR\)

栈破坏检查

缓冲区与栈之间加入 金丝雀 (随机产生,只读)
金丝雀值修改 -> 遭受了攻击

限制可执行代码区域

消除攻击者向系统中插入可执行代码的能力
分离可读 与 可执行

标签:计算机系统,存储,调用者,数据类型,随机化,地址,对齐
From: https://www.cnblogs.com/CTing/p/17495454.html

相关文章

  • 操作系统(3.5.2)--计算机系统中的死锁
    1.竞争不可抢占性资源系统中所拥有的不可抢占性资源其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。例如:系统中有两个进程P1和P2,它们都准备写两个文件F1和F2,而这两者都属于可重用和不可抢占性资源。进程P1先打开F1,然后再打开文件F2;进程P2先打开......
  • CCSP2019T2_纸牌计数 | 2019苏州CCSP大学生计算机系统与程序设计竞赛
    题目描述偶然在CSDN看到有人写了CCSP2019T2_纸牌计数的题解,突然想起来是一个不错的计数、dp题。以前的U盘找不到了,记得当时存了一步步偏分到AC代码,可惜。又想起来18年打铁了。。。此人的题解的链接CCSP201902纸牌计数——解题报告当年一共有5题,取自:https://www.sohu.com/a/34......
  • 第一章:计算机系统概论--第一轮
    教材说明:计算机组成原理(白中英),第六版,目前只是在复习阶段重做要求过的题目,第一行是我的答案,红色是没写的答案;另:附有思维导图课后习题:1.比较电子数字计算机和电子模拟计算机的特点解:电子数字计算机是按位运算的,并且不连续地跳动计算;用数字0和1表示数据,采用数字计数的计算方式,程序......
  • 计算机系统基础
    一、计算机系统计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。发明计算机的目标是代替人类去高效且高质量地完成工作。计算机有很多形式,比如:生活中常见的家用电脑,笔记本,智能手机,平......
  • 计算机系统中的大端模式和小端模式
    最近工作中有用到一个知识点,就是大小端,当然这是一个小的知识点,为什么写一个博文呢,我其实是想测试一下chatGPT,所以我开始将自己的想法告诉这个chatbot,让他给我一些写博文的建议,并且给我解答了一些疑惑,今天将自己的学习笔记整理出来展示给大家(bytheway,一个有用的搜索引擎和cha......
  • 计算机系统基础----特殊类型(数组,结构体 ,联合体)的分配
    《数组》《数组的分配与访问》首先我们要知道在8086中内存的结构如图: 可见一个单元格有8bit(1B) 对于指针类型数据占4字节,char占1个字节,int占4个字节,short占2个字节,double占8个字节 当我们访问数组中的数据时是要访存的,当要访存时,我们只知道数组的......
  • 《深入理解计算机系统》第七章学习笔记 链接
    链接是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载到内存并执行。链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是在程序被加载器加载到内存并执行时;甚至执行于运行时,也就是由应用程序来执行。在早期计算机系统中,链接......
  • 《深入理解计算机系统》第五章学习笔记 优化程序性能
    编写高效程序需要做到以下几点:第一,我们必须选择一组适当的算法和结构。第二,我们必须编写出编译器能够有效优化以转换成高效可执行代码的源代码。C语言的有些特性,例如执行指针运算和强制类型转换的能力,使得编译器很难对它进行优化。第三,针对处理运算量特别大的计算,将一个任务分成多......
  • 01-计算机系统简介
    01-计算机系统简介计算机系统分为两大类软件和硬件软件分为系统软件和应用软件系统软件:用来管理整个计算机系统语言处理程序;所有的高级语言都要编译成可以在计算机上执行的语言操作系统;服务型程序;像MPI,管理并行程序,管理进程间通信等;数据库管理系统;网络软件应用软件:按......
  • nmap工具:一款开源的网络扫描和主机检测工具,可以用于发现计算机系统上运行的端口、服务
    1、nmap是一款开源的网络扫描和主机检测工具,可以用于发现计算机系统上运行的端口、服务以及操作系统等信息。通过nmap的扫描,系统管理员可以获得自己网络环境下的详细情况,包括哪些端口正在监听,哪些服务正在运行等信息,可以在保证网络安全和稳定的前提下优化网络配置,增强网络安全......