2.3 汇编学习环境


我们通过上一章笔记,得知 计算机好像 只会通过位运算 进行 数字的加法。

而机器语言的魅力就是 位运算,解析规则。它们也都是通过 电路 来进行实现的。这就是 计算机最底层的本质了!!!

  • 汇编语言

所谓的汇编语言,不就是 通过助记符,来替代我们的 二进制嘛。只是为了 简化 我们的操作。而被发明出来的。
在这里插入图片描述
32 位 和 64位 的本质架构区别不大,只是寻址能力得到了增强。

在这里插入图片描述
目前 学习汇编 其实不需要什么 IDE 去写代码写程序了。而是 直接 下载 反汇编 工具 就可以。比如 OD、CE、x64dbg 这些。当然 搭配 VC++6.0 食用更佳。


2.4 通用寄存器(可以存储任何的值)

存储数据的过程:CPU --> 内存 --> 硬盘

32 位 CPU :8 16 32

64 位 CPU :8 16 32 64

现在的 操作系统其实都是向下兼容的!也就是说 32 位 的软件有很多很多呀。但是 都可以 运行在 64 位的系统上。

  • 32位的通用寄存器 只有 8个
    在这里插入图片描述

存值的范围只有:0 ~ FFFF FFFF

计算机如果向寄存器里存值,怎么存 ?

答:mov指令 直接 就能 存。

mov 目标地址,存储的数值
mov 目标地址,被传输的地址
mov 目标寄存器,存储的数值
mov 目标寄存器,被传输的寄存器

不同的寄存器(存储的数据宽度也不同)

32位16位8位
EAXAXAL(AX的低八位)
EBXBXBL (BX的低八位)
ECXCXCL (CX的低八位)
EDXDXDL (DX的低八位)
ESPSPAH(AX的高八位)
EBPBPBH (BX的高八位)
ESISICH(CX的高八位)
EDIDIDH (DX的高八位)

ESP:通常存储栈顶的地址
EBP:通常存储栈底的地址
EIP:通常存储的是 调用的 CALL 的地址。(跳转地址)


2.4 内存

寄存器是很小的,不够用。所以说,我们的数据怎么存储呢?就诞生了一个东西,叫做 内存

我们规定每个应用程序进程 其实 都可以 使用 4GB 的内存空间。(也被我们称为 虚拟内存)但实际上我们并不能用那么多的内存空间。所以相当于 空头支票。

内存地址:其实就是 为我们的每一块内存 起的一个名字。方便我们找到它。

寻址能力:就是能够 找到多大 范围的 地址。x86(32位) 能够找到 0x FFFF FFFF 的地址。 这其实 不算 庞大。

在这里插入图片描述
32 位 内存地址的数量是 FFFF FFFF + 1 = 4,294,967,297 个地址。

一个地址 对应着 一个 八位的 二进制串。也就是说 一个地址 相当于 一个字节。

所以理论上 能存 4,294,967,297 /1024 /1024 /1024 = 4GB

所以我们才说,32位 理论上 4GB 就是它的极限。

  • x64 位寻址能力 和 极限

x64 位寻址能力:0 - 0xFFFF FFFF FFFF FFFF
1,152,921,504,606,846,976 * 16 个内存地址。

x64 的 极限:17,179,869,184 GB

在这里插入图片描述
其实指针是什么呢?就是用来存储 内存地址的 类型变量。或指向内存地址的东西。是方便我们 操作 内存地址和其值的。

当你学会了 这个 底层,你会发现 指针 很容易!

比如说:我们存储的数据一般情况下,没有特别小的数据类型,可以小到 一个字节的。当然 JAVA有个 Byte 类型。如果 超过了 一个字节的类型,它在 内存中 怎么存储呢?


根据连续的内存空间,进行存储。因为 我们说 一个内存地址只对应一个 字节的 内存空间。那么4字节的 类型数据,我们就需要用到 4个 连续的内存空间 来进行 存储。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最标准mov代码:mov dword ptr ds:[内存地址]

byte、word、dword:数据宽度

ptr:相当于 Type类型

  1. CS (Code Segment) 代码段

  2. DS (Data Segment) 数据段

  3. ES (Extra Segment) 附加段

  4. SS (Stack Segment) 栈段

  5. FS:(Flag segment) 标志段寄存器

  6. GS:(Global segment) 全局段寄存器

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

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

相关文章

Java学习---Spring及其衍生(上)

在 Java 开发领域,Spring 生态占据着举足轻重的地位。从最初的 Spring 框架到后来的 SpringBoot、SpringMVC 以及 SpringCloud,每一个组件都在不同的场景下发挥着重要作用。本文将深入探讨这几个核心组件,包括它们的定义、原理、作用、优缺点…

LVGL应用和部署(个人开发嵌入式linux产品)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】随着经济越来越走向常态化发展,将来的公司基本是两个趋势,一个是公司越做越大,越来越趋向于垄断;另外…

CPU,减少晶体管翻转次数的编码

背景 以4比特为单位,共16个数。仔细思考状态转换过程中的晶体管翻转次数。 0000 0001,1 0010,2 0011,1 0100,3 0101,1 0110,2 0111,1 1000,4 1001,1 1010&…

LLM 中的 温度怎么控制随机性的?

LLM 中的 温度怎么控制随机性的? 在LLM的解码过程中,温度(Temperature)通过调整token概率分布的“陡峭程度”来控制随机性:温度越低,概率分布越陡峭(高概率token的优势越明显),随机性越低;温度越高,分布越平缓(高低概率token的差异被缩小),随机性越高。 温度,…

freemodbus使用

文章目录✅ **CubeMX配置**1. UART配置(RS485通信)2. Timer配置(RTU字符间隔检测)3. GPIO配置(RS485方向控制)✅ **STM32F103 RS485 FreeModbus RTU 配置概览****1️⃣ CubeMX硬件配置****2️⃣ FreeModb…

【Ansible】Ansible 管理 Elasticsearch 集群启停

一、集群节点信息 通过 Ansible inventory 定义的集群节点分组如下:[es](Elasticsearch 节点) 192.168.100.150192.168.100.151192.168.100.152[logstash](Logstash 节点) 192.168.100.151[kibana](Kibana …

Effective Python 第15条 不要过分依赖给字典添加条目时所用的顺序

引言:字典顺序的重要性 在Python编程中,字典(dict)是一种常用的数据结构,用于存储键值对。然而,字典的迭代顺序问题常常困扰着开发者。从Python 3.7开始,字典保证了键的插入顺序,这一…

事务隔离级别和传播方式

事务隔离级别 事务隔离级别是数据库系统中控制事务间相互影响程度的重要机制。不同的隔离级别在数据一致性保证和系统性能之间提供不同的权衡选择。下面我将详细解析四种标准隔离级别、它们能解决的问题以及可能存在的并发问题。 一、四种标准隔离级别 1. 读未提交 (Read Uncom…

不同地区的主要搜索引擎工具

研究seo,想汇总一下不同国家的搜索引擎工具,顺带了解一下这些公司提供的服务。 韩国:NAVER——>LINE 日本: 我还不知道,如果你知道可以评论告诉我 俄罗斯:yandex yandex有点像本土化的google 搜索引擎 邮箱 网盘 在…

实操:AWS CloudFront的动态图像转换

概述 适用于 Amazon CloudFront 的动态图像转换(前身为无服务器图像处理器),通过 Amazon CloudFront 的全球内容分发网络(CDN)实现实时图像处理。此 AWS 解决方案可帮助您优化视觉内容交付,同时显著降低运营…

Spring Boot 实战详解:从静态资源到 Thymeleaf 模板引擎

Spring Boot 凭借其 "约定大于配置" 的理念,极大简化了 Java 应用开发流程。本文将从 Spring Boot 核心特性出发,详细解析静态资源映射规则、Thymeleaf 模板引擎的使用,并结合完整实战案例,帮助开发者快速上手 Spring B…

docker的镜像与推送

docker build# 1. 基本构建命令(使用当前目录的 Dockerfile) docker build .# 2. 指定 Dockerfile 路径和构建上下文 docker build -f /path/to/Dockerfile /path/to/build/context# 3. 为镜像设置名称和标签 docker build -t my-image:latest .# 4. 设置…

计算机网络学习----域名解析

在互联网世界中,我们习惯通过域名(如www.example.com)访问网站,而非直接记忆复杂的 IP 地址(如 192.168.1.1)。域名与 IP 地址之间的转换过程,就是域名解析。它是互联网通信的基础环节&#xff…

构建高性能推荐系统:MixerService架构解析与核心实现

——深入剖析推荐服务的分层设计、工作流引擎与高可用策略 一、整体架构与分层设计 该推荐服务采用经典分层架构模式​7,各层职责清晰: ​HTTP接口层​ 支持 GET/POST 请求解析,自动映射参数到 RcmdReq 协议对象统一错误处理:参…

【安全漏洞】隐藏服务器指纹:Nginx隐藏版本号配置修改与重启全攻略

🚀 隐藏服务器指纹:Nginx配置修改与重启全攻略 你是否知道,默认情况下Nginx会在HTTP响应头中暴露版本号?这个看似无害的Server: nginx/1.x.x字段,实则可能成为黑客的"藏宝图"。今天我们就来揭秘如何通过简单配置提升服务器安全性,并手把手教你完成Windows环境…

构建RAG智能体(2):运行状态链

在现代AI应用开发中,如何让聊天机器人具备记忆能力和上下文理解是一个核心挑战。传统的无状态对话系统往往无法处理复杂的多轮对话场景,特别是当用户需要提供多种信息来完成特定任务时。 本文就来讨论一下如何利用runnable来编排更有趣的语言模型系统&a…

RPA认证考试全攻略:如何高效通过uipath、实在智能等厂商考试

rpa认证考试有什么作用?数字洪流席卷全球,企业效率之争已进入秒级战场。当重复性工作吞噬着创造力,RPA(机器人流程自动化)技术正以前所未有的速度重塑职场生态。财务对账、报表生成、跨系统数据搬运……这些曾经耗费人…

浅析MySQL事务隔离级别

MySQL 的事务隔离级别定义了多个并发事务在访问和修改相同数据时,彼此之间的可见性和影响程度。它解决了并发事务可能引发的三类核心问题: 脏读: 一个事务读取了另一个未提交事务修改的数据。不可重复读: 一个事务内多次读取同一行…

【Linux系统】基础IO(上)

1. 深入理解"文件"概念1.1 文件的狭义理解狭义上的“文件”主要指存储在磁盘上的数据集合。具体包括:文件在磁盘里:文件是磁盘上以特定结构(如FAT、ext4文件系统)保存的数据集合,由字节或字符序列构成。磁盘…

构建智能可视化分析系统:RTSP|RTMP播放器与AI行为识别的融合实践

技术背景 随着人工智能向边缘侧、实时化方向加速演进,视频已从传统的“记录媒介”跃升为支撑智能感知与自动决策的关键数据入口。在安防监控、工业安全、交通治理等复杂应用场景中,行为识别系统的准确性和响应效率,越来越依赖于视频源的时效…