第3章 程序的机器码表示

admin 2025-09-27 阅读:20 评论:0
什么是机器码? 机器码是对诸如操作数据、管理内存、读写在存储设备上的数据、通过网络通信等底层操作进行编码的字节序列。 什么是汇编码? 汇编码是机器码的文本表示,给出了程序中的各个指令。 什么是X86-64? X86-64是一种机器语言,用于...

什么是机器码?

机器码是对诸如操作数据、管理内存、读写在存储设备上的数据、通过网络通信等底层操作进行编码的字节序列。

什么是汇编码?

汇编码是机器码的文本表示,给出了程序中的各个指令。

什么是X86-64?

X86-64是一种机器语言,用于今天的台式电脑、笔记本电脑、大型数据中心、超级计算机等机器上的大部分处理器上。这种语言有很长的历史,开始于1978年的Intel公司的第一个16位的处理器,然后拓展到32位,最近的不部分都是64位。沿着这条线,为了更好的利用半导体技术、满足市场需要,添加了许多特征。虽然主要是由Intel公司驱动的,但是Intel的竞争对手AMD也作出了重要的贡献。导致现在的X86-64具有独特的功能设计,只有从历史的角度看才有意义。X86-64还具有向后兼容的能力,这种特性是不被现代编译器和操作系统使用的。

32位机器和64位机器

计算机工业最近已从32位机器迁移到了64位机器。32位机器只能利用大约4GB的随机访问内存。随着内存价格不断下降,计算需求和数据量不断增加whatsapp官网,突破32位机器能访问的内存限制已变得经济上可行且技术上可期。现在的64位机器可使用多达256TB(

字节),且很容易拓展到使用16EB(

字节)。虽然很难想象有那么大内存的机器的样子,但是要记住:在32位机器很常见的20世纪70年代和80年代,4GB的内存似乎也是很大的内存。

计算机执行的是机器码。

基于编程语言的规则、目标机器的指令集、操作系统遵守的约定,编译器通过一系列的阶段来生成机器码。比如GCC的C编译器先生成汇编码,后调用汇编器和链接器来从汇编码中生成可执行机器码。

在这一章里,我们将仔细地研究机器码和汇编码。

当使用诸如C语言和Java等高级语言编程时,程序的机器级别详细实现是向程序员屏蔽的。而当使用汇编语言编程时,程序员必须指定用于执行一次计算所需的底层指令。

在多数情况下,在由高级语言提供的更高级的抽象上工作要更有效率和更可靠。由编译器提供的类型检查帮助检测许多编程错误,确保以一致的方式引用和操作数据。现代有优化功能的编译器生成的代码通常跟一个有经验的汇编程序员手写的代码效率一样。用高级语言编写的程序能被编译和在多台不同的机器上执行,而汇编码是高度机器相关的。

为什么要花费时间研究机器码?

而且,由高级语言提供的抽象有时会隐藏程序的运行时信息。

在这一章里,我们将学习一种特定的汇编语言,了解C程序是如何被编译成这种形式的机器码的。

阅读由编译器生成的汇编码需要具备不同于手工编写汇编码不同的什么技能?

能理解经典编译器在将C结构转换成机器码时都做了哪些事?

相对于用C代码表示的计算,带优化功能的编译器可重排执行顺序、消除不必要的计算、用更快的操作替换较慢的操作、甚至能将递归计算编程迭代计算等。

理解源代码和汇编码之间的关系通常是一个挑战,有点像拼一个跟包装盒上的图片稍微不同的图。这是一个逆向工程,通过研究系统并反向推导系统是如何被创建的。在这里,前述的系统就是一个机器生成的汇编程序。这就简化了逆向工程的任务,因为生成的代码遵循相当规则的模式,且我们可以运行实验whatsapp网页版登录,让编译器为不同的程序生成汇编码。

在本章里,我们给出了许多示例,提供了许多练习来说明汇编语言和编译器的不同方面。在这里,掌握细节是理解更深入和更基础的概念的前提。

花时间来研究这些示例、做这些练习、测试你的答案跟参考答案是很重要的。

我们的展示是基于X86-64,将集中在被GCC和Linux使用的特征子集上。这就使得我们避免了X86-64的许多复杂性和奥秘版的特征。

我们的展示集中在编译C代码生成的机器码程序的类型上。因此,我们不会去介绍X86-64的许多支持早期微处理器编码的特征。

本章的主要内容

首先,介绍C语言、汇编码、机器码之间的关系。

然后,介绍X86-64的细节

接着,考虑诸如数组、结构体、联合体等数据结构在机器级别是如何实现的。有了这些机器级别编程的背景后whatsapp登录,我们讨论内存访问越界、系统容易遭受缓冲区溢出攻击等问题。

最后,介绍使用GDB调试器来检查机器码程序的运行时行为,以及展示有关浮点数数据和操作的机器码程序。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

3502文章数 0评论数
热门文章
  • 详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略

    详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略
    一、下载与安装WhatsApp WhatsApp是一款全球使用范围极广的即时通讯软件,不仅可以实现文本聊天,还能进行语音、视频通话WhatsApp中文版,发送文件等功能。由于众所周知的原因,国内用户想要下载和安装WhatsApp可能会遇到一些困难。不过,只要按照以下步骤操作,就能顺利完成WhatsApp的下载和安装。 首先,我们需要解决的是下载问题。由于WhatsApp在国内的应用商店无法直接下载,所以我们需要寻找其他的下载途径。Android用户可以选择到各大安卓市场搜索下...
  • 苹果IOS5.1.1机完美越狱

    苹果IOS5.1.1机完美越狱
    越狱工具下载:(需手动复制: http://bbs./read-htm-tid-4804612.html ) 详细的越狱教程: Absinthe 2.0.4的越狱方法与Absinthe 1.0的越狱方法完全一样,非常简单的“傻瓜一键式”。不过这里绿毒有说明,最好重新刷固件。支持越狱设备IOS5.1.1的固件下载地址请点击本站的IOS固件下载,看下图: 下载完固件之后,把设备连接iTunes,开始刷固件。你也可以选择不刷,但是在越狱的过程之中,新的系统在越狱时会比较的顺利,...
  • 电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹

    电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹
    1. 怎么找到微信聊天图片在哪个文件夹里 图片保存路径:/storage/emulated/tencent/MicroMsg/WeiXin/文件夹,这个是完整路径。而在文件夹中只需要找到/tencent/MicroMsg/WeiXinWhatsApp中文版,就可以了,前面两个文件夹是系统根目录。以下是保存及查找图片的方法步骤介绍。 第一步、找到桌面的微信APP,直接点击打开这个微信的APP。 2. 电脑微信图片保存在哪个文件夹 个人微信文件夹。 电脑版微信聊天的图片,都保存到...
  • Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式

    Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式
    Meta(最近更名为 Meta AI)悄然宣布,WhatsApp 将在 Windows 11 上放弃 UWP(WinUI)WhatsApp中文版,退回采用基于 Chromium 的容器。这意味着 WhatsApp 又回到了几年前的样子。由于 web.whatsapp.com 一直领先于 Windows 应用开发,它确实拥有一些新功能,但速度更慢,占用更多内存。 如果独立开发者因为无力维护所有平台的代码库而选择 Web 应用程序,那是一回事,但当像 Meta 这样价值万亿美元...
  • 小米下載WhatsApp的完整指南:安装与使用注意事项

    小米下載WhatsApp的完整指南:安装与使用注意事项
    综上所述,确保您的小米手机具备以上条件,将有助于您顺利下载和安装WhatsApp,享受便捷的通讯服务。在满足这些条件后,您就可以按照后续步骤进行WhatsApp的下载和安装。 2. 下载和安装WhatsApp的具体步骤 在小米手机上下载和安装WhatsApp的具体步骤相对简单,但需注意一些特殊情况。首先,确保你的手机系统已更新到最新版本,以保证最佳的兼容性。由于安卓手机商店内无法直接找到WhatsApp,你可以通过APKPure等第三方应用商店进行下载。打开APKPure应用...