计算机系统第三章程序的机械级表示笔记(1)

简介: 这篇文章是关于计算机系统第三章“程序的机械级表示”的笔记,解释了计算机如何执行机器代码,编译器如何生成机器代码,以及理解机器代码对于程序员在优化代码、分析程序运行时行为和安全性方面的重要意义。

计算机系统第三章程序的机械级表示笔记

1、计算机执行机器代码,用字节序列编码低级的操作:处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。

2、编译器基于编程语言的规则、目标机器的指令集(cpu类型)、操作系统遵循的惯例(软件层面)生成机器代码

3、其中GCC是c语言的编译器,输入源码输出汇编代码

4、编译器可以调用汇编器和链接器根据输入的汇编代码生成可执行的机器代码

(2)在编译器承担了生成汇编代码的大部分工作,我们学习机器代码的意义:

  1. 阅读和理解汇编代码依然是一位严谨的程序员的一项很重要的技能。
  2. 通过直接阅读编译器生成的汇编代码,我们能理解编译器的优化能力,并分析代码中隐含的低效率。
  3. 高级语言提供的操作层会隐藏我们想要了解的程序的运行时行为。比如:线程包写并发程序时候,想要准确知道在哪里访问共享数据。程序遭受攻击时候,很多都涉及程序存储运行时控制信息的方式的细节,想要了解这些漏洞如何产生,如何防御,需要具备机器级表示的知识。

3.2程序编码
3.2.1机器级代码:
计算机系统使用了多种不同形式的抽象模型来隐藏实现的细节。
第一种指令集体系结构或指令集架构

相关文章
|
算法 Shell Linux
【Shell 命令集合 文档编辑】Linux 检查文本文件中的拼写错误 spell 命令使用指南
【Shell 命令集合 文档编辑】Linux 检查文本文件中的拼写错误 spell 命令使用指南
228 0
|
消息中间件 存储 canal
3分钟白话RocketMQ系列—— 如何保证消息不丢失
3分钟白话RocketMQ系列—— 如何保证消息不丢失
4726 1
|
12月前
|
数据可视化 Java 应用服务中间件
springboot打war包,成功部署
这篇文章介绍了如何将Spring Boot项目打包成WAR文件,并成功部署到Tomcat服务器的详细步骤。
1064 0
springboot打war包,成功部署
|
网络协议 安全 网络安全
|
消息中间件 监控 物联网
消息队列 MQ使用问题之如何获取和处理消息堆积数据
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用合集之如何定时运行任务A,以及定时运行任务B,并且任务B能够独立于任务A运行
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
139 0
|
传感器 设计模式 安全
嵌入式底层驱动需要知道的基本知识
嵌入式底层驱动需要知道的基本知识
408 0
|
Oracle 关系型数据库 数据库
解决ORA-28002: the password will expire within 7 days
解决ORA-28002: the password will expire within 7 days
1121 0
|
前端开发 JavaScript UED
Web动画的实现方法与最佳实践
Web动画的实现方法与最佳实践
406 0
|
前端开发 Java API
Spring Boot升级到2.x,Jackson对Date时间类型序列化的变化差点让项目暴雷【享学Spring Boot】(上)
Spring Boot升级到2.x,Jackson对Date时间类型序列化的变化差点让项目暴雷【享学Spring Boot】(上)
Spring Boot升级到2.x,Jackson对Date时间类型序列化的变化差点让项目暴雷【享学Spring Boot】(上)