CSAPP读书笔记——程序的机器级表示之寄存器分布与mov指令集

本文主要是介绍CSAPP读书笔记——程序的机器级表示之寄存器分布与mov指令集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IA32整数寄存器的划分


IA32(Inter Architecture 32-bit)处理器中有 8 32位的寄存器(register)用来存储整型和指针(浮点数由单独的寄存器处理)。

这里写图片描述

这就是 8 integer register的简单图示。

其中每个 32 位的寄存器都由 %e 开头,每个寄存器的低 16 位都可以作为单独的存储空间来存储 16 位的数据(例如 short ),前四个寄存器的后低 16 又可以分为两个 8 位的寄存器,存储一个字节(byte,处理char类型)。

注意,最后两个寄存器有其特殊含义。
%esp表示存储系统栈的指针,只能被特殊的指令管理。
%ebp 表示帧指针(Frame pointer),也与系统栈的调用有关不能被随意访问。

前六个寄存器被称为通用寄存器,一般来讲在它们的使用上没有太多限制。

我们将处理 8 个位称为一个字节(byte),16个位称为一个字(word), 32 位称为双字节(double word)。
只是延续传统的命名而已,因为刚开始的时候IA是16位架构的,将其扩展为 3 2位之后用16位称一个word, 32 位称double word。


操作数指示符


编译器将程序解释为机器相关的汇编代码,从汇编代码我们可以看出程序对操作系统的各种资源的管理调度。
大多数汇编指令都有一个或者更多的操作算子(operands),用来指示该指令引用的源数据和它的目标位置。

源数据可以是一个常数或者是从寄存器、内存中取得的数。
目标位置可以是寄存器或者内存(通常用一个 32 位的地址来描述)

算子一般分为三类,我们依次介绍。

  1. immediate : 立即数。立即数就是一个常量,在ATT-format的汇编代码中,用前导符号 $ 表示,例如 $577 `或者 $0x1F 。只要可以被 32 bit表示即可。(汇编语言有时候可能会有 8 位(char)或16位(short)编码)。

  2. register : 寄存器。寄存器被作为汇编代码中的操作算子的时候,实际上指示的是该存储器中存储的值。 32 位寄存器(例如 %eax )存储 int 或者 pointer 16 位寄存器(例如 %ax )存储 short 8 位寄存器(例如%al)存储 char 。我们用符号 Ea 表示寄存器 a ,用R[Ea]表示 a 存储的内容。即将一组寄存器看数组R的下标。

  3. memory : 存储器。我们通过有效地址来访问存储器(内存),用符号 Mbyte[Addr] 表示从 Addr 开始的 byte 个字节长度的引用。常见的表达式为 Imm(Eb,Ei,s) ,其中

这篇关于CSAPP读书笔记——程序的机器级表示之寄存器分布与mov指令集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/564415

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给