接下来就让我们进入到本章的前半部分。在前面章节中已经多次提到,计算机CPU能直接解释运行的只有本地代码(机器语言)程序。用C语言等编写的源代码,需要通过各自的编译器编译后,转换成本地代码。

通过调查本地代码的内容,可以了解程序最终是以何种形式来运行的。但是,如果直接打开本地代码来看的话,只能看到数值的罗列。如果直接使用这些数值来编写程序的话,还真是不太容易理解。因而就产生了这样一种想法,那就是在各本地代码中,附带上表示其功能的英语单词缩写。例如,在加法运算的本地代码中加上add(addition的缩写)、在比较运算的本地代码中加上cmp(compare的缩写)等。这些缩写称为助记符,使用助记符的编程语言称为汇编语言。这样,通过查看汇编语言编写的源代码,就可以了解程序的本质了。因为这和查看本地代码的源代码,是同一级别的。

不过,即使是用汇编语言编写的源代码,最终也必须要转换成本地代码才能运行。负责转换工作的程序称为汇编器,转换这一处理本身称为汇编。在将源代码转换成本地代码这个功能方面,汇编器和编译器是同样的。

用汇编语言编写的源代码,和本地代码是一一对应的。因而,本地代码也可以反过来转换成汇编语言的源代码。持有该功能的逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编(图10-1)。

图10-1 汇编语言的源代码和本地代码是一一对应的

哪怕是用C语言编写的源代码,编译后也会转换成特定CPU用的本地代码。而将其反汇编的话,就可以得到汇编语言的源代码,并对其内容进行调查。不过,本地代码变换成C语言源代码的反编译,则要比反汇编困难。这是因为,C语言的源代码同本地代码不是一一对应的,因此完全还原到原始的源代码是不太可能的①。

Ps:①通过解析可执行文件得到源代码的方式称为“反汇编”或“反编译”,也称为“反向工程”。市场上销售的软件程序等,有时会在其使用说明书中明确表明禁止反汇编及反编译。

windows系统-汇编语言与机器码的关系相关推荐

  1. cmd find 命令 多个 或者 关系 +windows_Chocolatey -Windows系统的yum||apt 软件安装工具...

    1. Chocolatey是Windows系统下的包管理工具, 与Linux系统的yum或apt一样,支持通过命令行工具安装软件,是软件包数量最多的包管理器,几乎覆盖Windows常用软件,总软件数量 ...

  2. (转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?

    目录 1 UNIX 由来 2 Linux 由来 3 Windows与Linux的主要区别 4 关于Linux的一些疑惑 参考资料 目前常见的三大操作系统:Windows系统.Linux系统 和 Mac ...

  3. 突然Windows系统声音没有,怎么修复?

    今天不知道为什么,突然所使用的Windows7的系统声音没有,同时也没有Windows启动声音了.但播放音乐和影片等声音都是非常正常的,非常奇怪的现象. 虽然这个状态并不影响Windows的使用,但是 ...

  4. Windows系统更新问题汇总(补充修改)

    这几天正好安装服务器系统,多少碰到些系统升级更新UPDATE的问题.查了一些资料,汇总一下解决方法,下次解决方便些. 在系统安装结束完UPDATE更新时,有时候系统会提示无法更新,重启系统也无法解决. ...

  5. ReactOS 0.4.11 发布,Windows 系统的开源替代方案

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   ReactOS 团队发布了 ReactOS 0.4.11 版本,他们表示该版本已完成大量内核方面的工作,这有助于提 ...

  6. Windows系统漏洞学习总结

    Windows系统常见漏洞分析 由于windows NT/2000操作系统的普及率和市场占有率比较高,所以很容易使它成为很多黑客攻击的目标.目前,Windows NT/2000最主要的漏洞有Unico ...

  7. Synergy工具 共享Windows系统电脑Linux系统电脑 鼠标键盘

    Synergy工具 共享Windows系统电脑Linux系统电脑 鼠标键盘 相关软件相关文章发表评论 来源:西西整理时间:2014/11/6 15:03:11字体大小:A-A+ 作者:西西点击:24评 ...

  8. Windows系统中让硬盘更快的九大绝招

    Windows系统中让硬盘更快的九大绝招 一.合理使用硬盘  何为合理使用硬盘呢?首先我们要了解硬盘盘片的物理结构.分区并格式化后的硬盘却是以扇区为基本单位的,一个分区是由若干个扇区构成的.那什么是扇 ...

  9. Windows系统程序设计之结构化异常处理

    标 题: [原创]Windows系统程序设计之结构化异常处理 作 者: 北极星2003 时 间: 2006-09-20,20:21:28 链 接: http://bbs.pediy.com/showt ...

最新文章

  1. 工具: windows live +ManicTime的工具使用
  2. 【数据平台】关于Hadoop集群namenode format安全事故
  3. 【深度学习】CornerNet: 将目标检测问题视作关键点检测与配对
  4. PHP 循环删除无限分类子节点
  5. 第一章 计算机语言分类
  6. Wordpress SEO robots
  7. python打造个性化ai_人工智能GIS技术篇——打造GeoAI个性化应用,你需要人工智能GIS流程工具...
  8. js parsefloat 精度_javascript中的float运算精度
  9. php func_get_args(),PHP中func_get_args(),func_get_arg(),func_num_args()有什么不同
  10. Caffe学习2:Blob
  11. 台达ms300变频器使用手册中文_台达ms300变频器说明书.doc
  12. 图书销售系统需求分析获取
  13. 华为CANN训练营笔记——应用开发全流程 [5](with 代码版)
  14. Debussy 快速上手教程
  15. 前端实现图片验证码效果(数字和字母)
  16. Django设置中国时区问题
  17. 计算机网络常用相关术语大全
  18. android隐藏系统ui_如何在非库存设备上获取Android的系统UI调谐器
  19. MATLAB输入、导入方式(手动输入,TXT文件,Excel导入)
  20. 生活随机-谨慎的司机

热门文章

  1. 最长连续序列Python解法
  2. 自建服务器 下bt,使用Docker安装OpenTracker,自建BT Tracker服务器
  3. java servlet是接口_JavaWeb:Servlet 接口
  4. curl php 模拟来源_PHP-Curl模拟HTTPS请求
  5. 消除左递归c++代码_「leetcode」129. 求根到叶子节点数字之和【递归中隐藏着回溯】详解...
  6. linux6 epel yum源,CentOS6下yum源与epel源配置
  7. 提取某一个镇的行政边界_接口测试:A04_HttpRunner通用_02_提取数据_02_regex方式
  8. qt程序卡死 linux,QtCreator中打开.ui文件时卡死崩溃的解决方法
  9. 四因素三水平正交试验表_测试用例设计方法(二)——正交实验法
  10. python飞机大战资料-Python之游戏开发-飞机大战