CSAPP-程序的机器级表示

文章目录

      • 概念扫盲
      • 思想理解
      • 经典好图
      • 安全事件

概念扫盲

1.汇编代码使用文本格式,相较于汇编的二进制可读性更好
2.程序内存包括:可执行的机器代码、操作系统需要的信息、管理过程调用和返回的运行时栈、用户分配的内存块
3.链接器为函数调用找到匹配的可执行代码的位置
4.x86-64中传送指令不能都指向内存位置
5.x86-64中任何寄存器生成的32位值的指令都会把该寄存器的高位设置为0
6.cltq指令将%eax符号扩展到%rax的所有位中
7.乘法指令的参数一个由源操作数给出,一个放在%rdx中。结果存放在%rdx和%rax中
8.有符号除法指令idivl将寄存器%rdx(高64)和%rax(低64)中的128位作为被除数,除数作为指令的操作数给出。商存储在寄存器%rax中,余数存储在%rdx中
9.SIMD(单指令多数据),允许多个操作以并行模式执行
10.指针NULL表示指针没有指向任何地方
11.蠕虫可以自己运行并且将等效副本传播,病毒是添加到操作系统在内的程序中,不能独立运行
12.安全单一化指许多系统容易受到同一种病毒的攻击
13.ASLR(地址空间布局随机化-Address-Space Layout Randomization)每次程序运行时各部分加载到不同区域,可以被穷举攻击(nop sled)
14.canary值,来自金丝雀在矿洞中察觉有毒气体。用于检测栈是否被破坏,即哨兵值
15.所有XMM寄存器都是调用者保存,被调用可以随意覆盖这些寄存器
16.函数参数指针和整数通过寄存器传递,浮点值通过XMM寄存器传递。参数到寄存器的映射取决于类型和排列顺序

思想理解

1.C预处理器扩展源码(include指定文件,扩展define声明的宏),编译器产生汇编,汇编产生目标文件(所有指令的二进制表示,无全局地址),连接器将代码与实现库函数合产生可执行文件
2.反汇编器只是基于机器代码文件中的字节序列来确定汇编代码,不需要访问源代码或者汇编代码
3.x86-64中内存引用总是以四字长的寄存器给出,哪怕只是一字节
4.当switch语句情况数量比较多且范围跨度较小时使用跳转表
5.栈调用通过寄存器最多传递6个整数值,更多参数可以由调用者在自身栈帧存储
6.PC相对寻址是相对本身地址的后面一条指令进行的
7.一个联合的总大小等于它最大字段的大小,将互斥的字段声明为联合可以减少空间的使用
8.奇偶校标志位断最近一次算数逻辑运算产生值的最低位字节是否有偶数个一。在浮点数比较时可以判断是否有操作数是NaN

经典好图

x86规则:生成1字节和2字节的指令保持剩下字节不变,4字节将高位4个字节置0

在这里插入图片描述

复杂寻址模式对于数组、结构元素相当有用

在这里插入图片描述

不同的数据传送指令的转换关系

在这里插入图片描述

set指令集合,jump类似

在这里插入图片描述

当前正在执行过程的栈总是在栈顶,返回地址是调用者管理

在这里插入图片描述

指针作为参数占8个字节

在这里插入图片描述

数组的指针运算

在这里插入图片描述

管理变长栈帧,x86-64使用%rbp作为栈指针

在这里插入图片描述

浮点体系简介

在这里插入图片描述

安全事件

1.1988年著名蠕虫病毒:对finger守护进程fingerd进行缓冲区溢出攻击,造成远程守护进程溢出并执行代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P9889 [ICPC2018 Qingdao R] Plants vs. Zombies 题解 二分+贪心

[ICPC2018 Qingdao R] Plants vs. Zombies 传送门 题面翻译 给定 n n n 个植物和 m m m 的步数限制,每个植物在位置 1 … n 1\dots n 1…n 上。你初始时在位置 0 0 0,每次可以移动到相邻的位置上。 每次设你走完一步后到达的位置是 i i i&#…

数学建模【模糊综合评价分析】

一、模糊综合评价分析简介 提到模糊综合评价分析,就先得知道模糊数学。1965年美国控制论学家L.A.Zadeh发表的论文“Fuzzy sets”标志着模糊数学的诞生。 模糊数学又称Fuzzy数学,是研究和处理模糊性现象的一种数学理论和方法。模糊性数学发展的主流是在…

大语言模型系列-GPT-3

文章目录 前言一、GTP-3的改进二、GPT-3的表现总结 前言 《Language Models are Few-Shot Learners,2020》 前文提到GPT-2进一步提升了模型的zero shot能力,但是在一些任务中仍可能会“胡说”,GTP-3基于此提出了few shot,即预测…

7-22 试试手气(Python)

我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件: 1、每个骰子摇出…

ZYNQ--AXI_DMA使用

文章目录 手册阅读典型连接图SG模式关闭时的寄存器地址SG模式开启时的寄存器地址BD设计PS端设计对于DMA寄存器的控制对DMA进行初始化 手册阅读 典型连接图 SG模式关闭时的寄存器地址 SG模式开启时的寄存器地址 关于各个bit的功能,具体看数据手册。 BD设计 通过PL侧…

sql高级

sql高级 SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目。 SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。 **注意:**并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, O…

Qt + mqtt对接阿里云平台(一)

一、阿里云平台 官网:点击跳转 二、创建产品与设备 1、“公共实例” 2、“设备管理”->“产品”->“创建产品” 3、“产品名称”->“自定义品类”->"确认" 4、“前往添加” 5、“添加设备” 6、摄入DeviceName和备注名称 7、"前往查…

每周一算法:A*(A Star)算法

八数码难题 题目描述 在 3 3 3\times 3 33 的棋盘上,摆有八个棋子,每个棋子上标有 1 1 1 至 8 8 8 的某一数字。棋盘中留有一个空格,空格用 0 0 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局…

文心一言 VS 讯飞星火 VS chatgpt (210)-- 算法导论16.1 1题

一、根据递归式(16.2)为活动选择问题设计一个动态规划算法。算法应该按前文定义计算最大兼容活动集的大小 c[i,j]并生成最大集本身。假定输入的活动已按公式(16.1)排好序。比较你的算法和GREEDY-ACTIVITY-SELECTOR的运行时间。如何要写代码,请用go语言。 文心一言&…

excel统计分析——裂区设计

参考资料:生物统计学 裂区设计(split-plot design)是安排多因素试验的一种方法,裂区设计对因素的安排有主次之分,适用于安排对不同因素试验精度要求不一的试验。 裂区设计时,先按第一因素的处理数划分主区&…

独立站营销新纪元:AI与大数据塑造个性化体验的未来

随着全球互联网的深入发展和数字化转型的不断推进,作为品牌建设和市场营销的重要载体,独立站将迎来新的发展机遇。新技术的涌现,特别是人工智能和大数据等技术的广泛应用,为独立站带来了前所未有的机遇与挑战。本文Nox聚星将和大家…

ios xcode 15 PrivacyInfo.xcprivacy 隐私清单

1.需要升级mac os系统到13 兼容 xcode 15.1 2.升级mac os系统到14 兼容 xcode 15.3 3.选择 New File 4.直接搜索 privacy 能看到有个App Privacy 5.右击Add Row 7.直接选 Label Types 8.选中继续添加就能添加你的隐私清单了 苹果官网文档Describing data use in privacy man…

springboot247人事管理系统

人事管理系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导…

Redis基本使用和基础知识整理

Redis是做什么的? Redis是一个开源,内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列。Redis将数据储存在内存当中 内存的特点 易失性(在断电之后数据就没有了)进行读取数据等IO操作的速度要比…

C语言进阶—表达式求值

隐式类型转换&#xff1a; C 的整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。 为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升。 #include <stdio.h>int main() {char c 1;printf(…

Springboot 的几种配置文件形式

方式一&#xff1a;多个yml文件 步骤1&#xff1a;创建多个配置文件 application.yml #主配置文件 application-dev.yml #开发环境的配置 application-prod.yml #生产环境的配置 application-test.yml #测试环境的配置步骤2&#xff1a;applicaiton.yml中指定配置 在a…

代码随想录day13(1)栈与队列:用栈实现队列(leetcode232)

题目要求&#xff1a;使用栈实现push、pop、empty、peek&#xff08;返回队列首部元素&#xff09;。 思路&#xff1a;本题思路比较容易&#xff0c;即用两个栈模拟即可&#xff0c;pop时只需要先判断stackout栈是否为空&#xff0c;如果不空直接弹出&#xff0c;如果空就将s…

组合逻辑电路(一)(加法器)

目录 组合逻辑电路的特点及功能描述 采用SSI的组合逻辑电路的分析与设计 采用SSI的组合逻辑电路的分析 采用SII的组合逻辑电路的设计 例 例 例 常用的MSI组合逻辑电路 半加器 全加器 加法器 串行进位加法器 例 例 超前进位加法器 组合逻辑电路的特点及功能描述 小规模集成…

原生微信小程序电影购票+后台管理系统[含文档]

简介 正文获取联系方式&#xff01;❤❤❤关于JAVA/小程序/安卓/PHP/Python/C#/ASP.NET/大数据/爬虫/数据可视化都可推荐选题和提供专业的指导和支持。 【毕设源码推荐项目】基于原生微信小程序电影购票系统 适用于计算机类毕业设计&#xff0c;本系统功能完整&#xff0c;适合…

基础小白快速入门并行计算------>我们为什么要学习并行计算

什么是并行计算&#xff1f; 随着计算机的不断发展&#xff0c;我们处理的数据不断变多&#xff0c;需要更大得到处理能力、我们希望计算机有着更大更强壮的计算能力&#xff0c;由于cpu的运行能力有限&#xff0c;我们便想到了将多个cpu进行串联计算问题&#xff0c;这也就是我…