【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-8

文件下载与邀请翻译者

学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。

讲解下载英特尔开发手册的文章

翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么,欢迎你的加入。

另外,我不仅仅是打算翻译这一种手册,以后,可能还需要去翻译许多的英文技术文档,以支持系统底层的教学,培养系统底层程序员。

我有钱了以后,应该是会出私钱来请人翻译一批英文技术文档。当前,暂时没钱,若是有志愿加入的,欢迎啊。

本节翻译

【原文】1.5. NOTATIONAL CONVENTIONS
This manual uses special notation for data-structure formats, for symbolic representation of instructions, and for hexadecimal numbers. A review of this notation makes the manual easier to read.

【翻译】

1.5.  符号约定
本手册对数据结构格式、指令的符号表示和十六进制数使用特殊的表示法。回顾一下这个符号会使手册更容易阅读。

【讲解】上面的翻译中,对于notation这个单词,有的时候,我将其翻译为符号,有的时候,将其翻译为表示法。这一处,我自己也不知道怎么来处理更好。所以呢,就暂时地这么搁置着了。


【原文】1.5.1. Bit and Byte Order
In illustrations of data structures in memory, smaller addresses appear toward the bottom of the figure; addresses increase toward the top. Bit positions are numbered from right to left. The numerical value of a set bit is equal to two raised to the power of the bit position. IA-32 processors are “little endian” machines; this means the bytes of a word are numbered starting from the least significant byte. Figure 1-1 illustrates these conventions.

【翻译】
1.5.1.  位和字节顺序
在内存数据结构的图示中,较小的地址出现在图的底部;地址向顶部增加。位从右到左编号。一组位的数值等于2的位位置的幂次。IA-32处理器是“小端”机器;这意味着一个字的字节从最低有效字节开始编号。这些约定如图1-1所示。

【讲解】这一段呢,我略微作一下讲解。

这里谈到了不同尺寸的整数在内存中的放置的问题。假定有一个整数,0x1234,我们将其放置在内存单元0x1000起始的位置。为了放置0x1234这个word型的数,我们可以有两种方案。

第一种,将低字节放置在内存的低地址的位置。也就是,将0x34放在内存字节单元0x1000中,将0x12放置在内存字节单元0x1001中。像这种地,低位字节放置在内存的低地址的位置,高位字节放置在内存的高地址位置,这个就是小端字节序,也叫做小端顺序,小尾数。

英特尔手册上,说的是将一个2字节的整数放置在内存中。我们为了更好地理解这个小端字节序,我们也可以举出来一个4字节的整数的例子,也就是双字整数。

假定,我们要将0x12345678放置在内存地址0x3000的位置,那么,按照小端字节序,它放置的方式如下所示。

0x78   ---->    0x3000

0x56   ---->    0x3001

0x34   ---->    0x3002

0x12   ---->    0x3003

到了这里,我相信,小端字节序的问题,你应该就能明白了。

除了小端字节序以外,还有另外一种在内存中放置整数的顺序,叫做大端字节序,也叫做大端顺序,大尾数。在这种方式里面,将某一个尺寸的整数放置在内存里面,高位字节放置在内存的低地址位置,低位字节放置在内存的高地址位置。

如果是将0x1234放置在0x1000中,且采用大端顺序,则放置方式如下。

0x12   ---->    0x1000

0x34   ---->    0x1001

如果是用大端顺序,将0x12345678放置在内存0x3000中,则存储情况如下。

0x12   ---->    0x3000

0x34   ---->    0x3001

0x56   ---->    0x3002

0x78   ---->    0x3003

【原文】1.5.2.  Reserved Bits and Software Compatibility
In many register and memory layout descriptions, certain bits are marked as reserved.  When bits are marked as reserved, it is essential for compatibility with future processors that Software treat these bits as having a future, though unknown, effect.  The behavior of reserved bits should be regarded as not only undefined, but unpredictable.  Software should follow these Guidelines in dealing with reserved bits:
• Do not depend on the states of any reserved bits when testing the values of registers which contain such bits.  Mask out the reserved bits before testing.
• Do not depend on the states of any reserved bits when storing to memory or to a register.
• Do not depend on the ability to retain information written into any reserved bits.
• When loading a register, always load the reserved bits with the values indicated in the documentation, if any, or reload them with values previously read from the same register.

【翻译】1.5.2. 保留位和软件兼容性
在许多寄存器和内存布局描述中,某些位被标记为保留。当位被标记为保留时,为了与未来的处理器兼容,软件必须将这些位视为具有未来(尽管未知)的效果。保留位的行为不仅是未定义的,而且是不可预测的。软件在处理保留位时应遵循以下准则:
•当测试包含这些位的寄存器的值时,不要依赖于任何保留位的状态。在测试前屏蔽掉保留的位。
•当存储到内存或寄存器时,不依赖于任何保留位的状态。
•不要依赖于保留写入任何保留位的信息的能力。
•当加载寄存器时,总是用文档中指示的值加载保留位,如果有的话,或者用先前从同一寄存器读取的值重新加载它们。

【讲评】【Do not depend on the ability to retain information written into any reserved bits.】这一句话,它的翻译,我还有点不理解。不知道你是怎么来理解的。我觉得,它的意思大概是说,某些个保留位呢,假定原来的保留值是0,然后呢,你将1写入这个保留位,执行的结果是,这个保留位的值依然会是0,而不是你刚刚写入的1。大概,某些个保留位,在早期的型号的处理器里面,用什么值去写入,它都会是保留值。而新出的型号里面,可能就是说,你用什么值来写入,它里面就会是什么值。英特尔建议,你呢,不要依赖于某一型号与某一时期里面,保留位的值始终保持不变的能力。因为,早期里面这些个保留位可能具备保持保留值的能力,而将来的型号里面,可能就没有这种保持保留值的能力了。

不知道,你的理解是怎么样的。

【原文】NOTE
Avoid any software dependence upon the state of reserved bits in IA-32 registers. Depending upon the values of reserved register bits will make software dependent upon the unspecified manner in which the processor handles these bits. Programs that depend upon reserved values risk incompatibility with future processors.

【翻译】请注意
避免任何软件依赖于IA-32寄存器中保留位的状态。根据保留的寄存器位的值将使软件依赖于处理器处理这些位的未指定方式。依赖于保留值的程序有与未来处理器不兼容的风险。

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

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

相关文章

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件,用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB…

【云岚到家】-day07-5-实战项目-优惠券活动-活动管理

【云岚到家】-day07-5-实战项目-优惠券活动-活动管理 2 优惠券活动管理2.1 需求分析2.1.1 **新增优惠券活动**1)界面原型2)数据分析3)数据校验 2.1.2 **查询优惠券活动**1)界面原型 2.2.3 **修改优惠券活动**1) 界面原型2&#xf…

Qt-窗口对话框QMessageBox的使用(51)

目录 前言 描述 使用 自定义按钮 简单方式创建 前言 Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。常⽤标准对话框如下: 描述 消息对话框 QMessageBox 消息对话框是应⽤程序中最常⽤的界⾯元素。消息…

D3.js(五):实现组织架构图

实现组织架构图 效果初始化组织机构容器并实现缩放平移功能效果源码 渲染节点效果源码 渲染连线效果源码 完整源码 效果 初始化组织机构容器并实现缩放平移功能 效果 源码 import {useEffect} from react; import TreeData from ./json/tree-data.json;interface ITreeConfig…

crd介绍

在 Kubernetes 中,CRD(Custom Resource Definition)和 CR(Custom Resource)是用于扩展 Kubernetes 功能的机制。它们的关系和使用可以用一个完整案例来说明。 定义 CRD(Custom Resource Definition&#x…

中后台 B 端产品设计

中后台 B 端产品设计 一、设计目标二、设计流程三、设计要点四、相关模块 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! 中后台B端产品设计: 是指针对企业内部业务人员和管理…

python+appium+雷电模拟器安卓自动化及踩坑

一、环境安装 环境:window11 1.1 安装Android SDK AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 这里面任选一个就可以,最终下载完主要要安装操作安卓的工具adb,安装这个步骤的前提是要…

Linux驱动开发——设备树

文章目录 1 什么是设备树?2 DTS、DTB和DTC3 DTS语法3.1 dtsi头文件3.2 设备节点3.3 标准属性3.4 根节点compatible属性3.5 向节点追加或修改内容 4 创建小型模板设备树5 设备树在系统中的体现6 绑定信息文档7 设备树常用OF操作函数7.1 查找节点的OF函数7.2 查找父/子…

【工具变量】上市公司当年是否发生财务重述指标整理Stata代码(2000-2023年)

计算说明:使用财务重述公告中所更正年报对应的年度作为财务重述的年度,若企业年报中发生财务重述取1,否则取0。本示例的财务重述是指上市公司对以前年度财务报表中的会计差错进行更正和披露,不包括股票拆分、股票红利、终止经营、…

Java 类和对象详解(上 )

个人主页: 鲤鱼王打挺-CSDN博客 Java专栏:https://blog.csdn.net/2401_83779763/category_12801101.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12801101&sharereferPC&sharesource2401_83779763&sharefromfrom_link &…

SwiftUI 如何取得 @Environment 中 @Observable 对象的绑定?

概述 从 SwiftUI 5.0(iOS 17)开始,苹果推出了全新的 Observation 框架。它作为下一代内容改变响应者全面参与到数据流和事件流的系统中。 有了 Observation 框架的加持,原本需要多种状态类型的 SwiftUI 视图现在只需要 3 种即可大…

R语言详解predict函数

R语言中predict函数在建立模型&#xff0c;研究关系时常用。但是不同type得到的结果常常被混为一谈&#xff0c;接下来&#xff0c;探讨predict得到的不同结果。 #数据 set.seed(123) n<-1000 age<-rnorm(n,mean50,sd10) gender<-rbinom(n,1,0.5) disease<-rbinom…

CDC变更数据捕捉技术是什么?和ETL有什么不同?

一、什么是CDC技术? 变更数据捕获&#xff08;Change Data Capture&#xff0c;简称 CDC&#xff09;是一种用于识别和跟踪数据源中发生变化的数据的技术。 工作原理&#xff1a; 1.监测数据源&#xff1a;CDC 工具会持续监测指定的数据源&#xff0c;如数据库表、文件系统…

【踩坑随笔】Tensorflow-GPU训练踩坑

一个无语的坑&#xff0c;4060单卡训练&#xff0c;8G内存本来就不够&#xff0c;还没开始训练就已经爆内存了&#xff0c;但是居然正常跑完了训练&#xff0c;然后一推理发现结果就是一坨。。。往回翻日志才发现原来中间有异常。 首先解决第一个问题&#xff1a;Could not lo…

k8s部署Kafka集群超详细讲解

准备部署环境 Kubernetes集群信息 NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2 Kafka&#xff1a;3.7.1版本&#xff0c;apche版本 Zookeeper&#xff1a;3.6.3版本 准备StorageClass # kubectl get sc NAME PROVISIONER RECLA…

音频文件处理 m4a 格式转为 wav 格式 - python 实现

在做音频算法开发时&#xff0c;有时获取的样本为 .m4a格式需要将其转为 .wav,方便之后的数据处理。 安装 python 库&#xff1a; pip install AudioSegment 代码实现具体如下&#xff1a; #-*-coding:utf-8-*- # date:2024-10 # Author: DataBall - XIAN # Function: 音频文件…

LIN从节点:波特率测试

文章目录 1、为什么需要测&#xff1f;2、如何实现测试&#xff1f;3、测试结果4、注意事项 1、为什么需要测&#xff1f; 调节波特率的变化&#xff0c;使主节点同步场位速率变化&#xff0c;验证从节点能否通过同步段进行调节自身位速率。对应ISO17987协议。 2、如何实现测…

锥线性规划【分布鲁棒、两阶段鲁棒方向知识点】

1 锥线性对偶理论 本部分看似和分布鲁棒、两阶段鲁棒优化没什么关系&#xff0c;但值得优先学习&#xff0c;原因将在最后揭晓。 二阶锥 二阶锥&#xff08;second-order cone&#xff0c;又称ice-cream/Lorentz cone&#xff09;的形式为&#xff1a; 非负象限锥 半正定锥 …

jmeter出参保存到文件,保存失败解决

1、添加JSON提取 2、添加beanshell FileWriter writer new FileWriter("C:/Users/xxx/Desktop/signUrl.csv", true); writer.write(vars.get("company_name")"\t"vars.get("signUrl")"\n"); writer.close(); 写文件的两个…

python的多线程和多进程

首先需要明确的是&#xff0c;多进程和其他语言的一样&#xff0c;能够利用多核cpu&#xff0c;但是python由于GIL的存在&#xff0c;多线程在执行的时候&#xff0c;实际上&#xff0c;每一时刻只有一个线程在执行。相当于是单线程。然而多线程在某些情况下&#xff0c;还是能…