有兴趣参与翻译“Intel 64和IA-32架构软件开发者手册”的进

时间:2021-12-03 01:07:24
Intel 64 and IA-32 Architectures Software Developer's Manual是Intel提供给开发人员的技术手册,但是很可惜目前还没有完整的中文版。

现在看雪论坛有一些优秀的年轻人打算翻译这套手册,毫无疑问这个目标是相当的有意义,不过,这个也是一个大工程,工作量非常大,所以,需要足够的人手团结协作才能实现,所以,希望有志之士能够参与进来,为这个大工程添砖加瓦,使这个目标尽早实现。

我们都是自愿加入,利用业余时间来做这件事情。只要有激情,有一些技术基础(最好学过汇编语言),就可以做了。

愿意加入翻译计划的请加这个QQ群:23407839

30 个解决方案

#1


暂时贴这么多吧:

IA-32 Intel 体系结构
软件开发者手册
卷1:基本体系结构

目录
第一章 关于本手册
1.1 本手册中的IA-32处理器 隐喻
1.2 卷1:基本体系结构 总览
1.3 符号约定
1.3.1 位和字节次序
1.3.2 保留位和软件兼容性
1.3.3 指令操作数
1.3.4 16进制和2进制数
1.3.5 段寻址
1.3.6 对于 CPUID,CR以及MSR值的一个新语法
1.4 参考文献

第二章 IA-32 INTEL 体系结构
第三章 基本执行环境
第四章 数据类型
第五章 指令集概要
第六章 过程调用,中断,异常
第七章 使用通用指令编程
第八章 使用X87 FPU 编程
第九章 使用 INTEL MMX 技术编程
第十章 使用 SIMD(单指令流多数据流)流扩展(SSE)编程
第十一章 使用 SIMD 流扩展2 编程
第十二章 使用 SIMD 流扩展3 编程
第十三章 输入/输出
第十四章 处理器标示和特征甄别
附录A 扩展标志寄存器交叉引用
附录B 扩展标志寄存器条件码
附录C 浮点异常概要
附录D 编写 X87 异常处理器的指导方针
附录E 编写 SIMD 浮点异常处理器的指导方针
图示索引
表索引



第1章 关于本手册
1.1 本手册中涉及的IA-32处理器
该手册包含的信息主要适用于最近的绝大多数IA-32处理器,包括: Pentium(奔腾)处理器,P6处理器族,Pentium M(移动奔腾)处理器,Intel Xeon(至强)处理器,Pentium D处理器,以及奔腾处理器的罕见版本。
P6处理器族是指基于P6族微结构的处理器,包括 Pentium Pro (高能奔腾),
Pentium II,Pentium III 处理器。Pentium 4,Intel Xeon 处理器,Pentium D 处理器,和 
Pentium 罕见版本的处理器是基于 Intel NetBurst 微结构。

1.2 卷1:基本体系结构 总览
本手册包含目录内容描述:

第1章 —— 关于本手册。给出IA-32 Intel 体系结构软件开发者手册 全3卷的总览。它同样描述了3本手册中的符号约定以及对于程序员和硬件设计者感兴趣的Intel 手册和文档的相关列表。

第2章 —— IA-32 INTEL 体系结构。介绍 IA-32 体系结构和基于该体系结构的处理器家族。它同样给出了一个关于建立在这些处理器上特征的总览和IA-32体系结构历史的摘要。

第3章 —— 基本执行环境。介绍了内存组织模块和被程序使用的寄存器集。

第4章 —— 数据类型。介绍了处理器提供的数据类型和寻址模式;提供一个实数,浮点数格式和浮点异常的总览。

第5章 —— 指令集概要。列出所有 IA-32 体系结构指令并分成若干技术组。

第6章 —— 过程调用,中断,异常。描述了过程栈和提供给过程调用,中断服务和异常的一些机制。

第7章 ¬—— 使用通用指令编程。描述了基本的在基本数据类型,通用和段寄存器上操作的装载,存储,程序控制,算数和串指令;同样描述了执行在保护模式的系统指令。

第8章 —— 使用X87 FPU 编程。描述了 x87 浮点单元,包括浮点寄存器和浮点数据类型;给出一个关于浮点指令集的总览,并且描述了处理器的浮点异常条件。

第9章 —— 使用 INTEL MMX 技术编程。描述 Intel MMX 技术,包括 MMX 寄存器和数据类型;同样也提供MMX指令集的一个总览。

第10章 —— SIMD(单指令流多数据流)流扩展(SSE)编程。描述 SSE 扩展,包括 XMM 寄存器,MXCSR 寄存器以及打包单精度浮点数据类型;提供一个SSE指令集的总览并且给出了访问SSE扩展的代码。

第11章 —— 使用 SIMD 流扩展2 编程。描述了 SSE2 扩展,包括 XMM 寄存器,打包双精度数据类型;提供SSE2指令的一个总览。并且给出访问 SSE2 扩展的代码。这一章同样描述可被SSE和SSE2指令产生的SIMD 浮点异常。他同样阐述了对SSE和SSE2扩展在操作系统和应用程序中合并支持的通用方针。

第12章 —— 使用 SIMD 流扩展3 编程。描述 SSE3 扩展;提供一个SSE3指令集的总览,以及访问 SSE3 扩展的代码。

第13章 ¬—— 输入/输出。描述了处理器的I/O机制,包括I/O端口寻址,I/O指令,以及I/O保护机制。

第14章 —— 处理器标示和特征甄别。描述了如何去甄别CPU的类型以及处理器上可用的特征。

附录A —— 扩展标志寄存器交叉引用。总结 IA-32体系如何影响EFLAGS(扩展标志寄存器) 寄存器中的标志。

附录B —— 扩展标志寄存器条件码。总结了条件跳转,移动以及基于条件码置位指令如何使用EFLAGS 寄存器中的条件码标志。

附录C —— 浮点异常概要。总结了由x87 FPU(浮点单元)和SSE/SSE2/SSE3 浮点指令引发的异常。

附录D —— 编写 X87 异常处理器的指导方针。描述了如何设计和编写MS-DOS兼容异常处理器去处理FPU的异常。(包括软件和硬件需求和汇编语言代码的例子)。该附录同样描述了编写健壮FPU异常处理器的通用技术。

附录E —— 编写 SIMD 浮点异常处理器的指导方针。给出编写处理由SSE/SSE2/SSE3浮点指令引发异常的异常处理器的若干方针。

1.3 符号约定
本手册使用特殊的符号来表示数据结构格式,指令的符号化描述表,以及16进制和2进制的数字。这些符号描述如下:

1.3.1 位和字节次序
数据结构在内存中的示意图里,较小的地址似乎朝向图的底端;地址向上增长。位的位置被从右向左计入。一个位集合中数字值相当于依据位位置增长的2的幂。IA-32处理器是“小尾”机器;这意味着一个字从其两个字节中最小的有意义的字节开始计数。见图1-1
 

1.3.2 保留位和软件兼容性
在一些寄存器和内存设计描述里,特定一些位被置为保留。其实这是为了未来处理器的兼容性而保留这些位。软件以在将来可能足够未知的影响对待这些位。这些保留位的行为应该被看作不仅仅是未定义而是不可预知的。
软件应该使用如下方针处理这些位:
• 不要在测试包含保留位寄存器的值中依赖任何这些位的状态,应该在测试前剔除这些保 留位。
• 不要在向内存或一个寄存器存储(赋值)时依赖于任何保留位的状态。
• 不要将私有保留的信息写入这些保留的位中。
• 当转载一个寄存器时,常常应该将文档中确定的值装载到保留位中或者根据该寄存器的 原先对应位的值重新装载这些保留位。

注意
避免任何软件在IA-32寄存器保留位上的依赖。在这些寄存器保留位上的依赖将会使处理器以未定义的行为处理这些位。程序依赖这些保留位将会冒处理器将来改变这些位的危险。

1.3.3 指令操作数
当指令被表示被符号化时,IA-32汇编语言的子集将会被使用。在这个子集中,一条指令有如下格式,

Label: mnemonic 参数1,参数2,参数3
其中:
•一个 label(标号)是紧接着后面冒号的一个标示。
•一个 mnemonic(记忆码)是一个关于一类相同功能的指令的操作码保留字。
•操作数 argument1,argument2,以及argument3是可选的。根据操作码可能有0个
至3个操作数。现今而言,他们不是寄存器的保留名字就是在程序其他地方分配的数据项名称。

当两个操作数出现在算数或逻辑指令时,右操作数是源操作数,左操作数成为目的操作数。
举例来说:
LOADREG: MOV EAX,SUBTOTAL
在该例中,LOADREG是一个标号,MOV是一个便于记忆的操作码的标示,EAX是目的操作数,SUBTOTAL源操作数。一些汇编语言将目的与源操作数的顺序颠倒过来。

1.3.3 16进制与2进制数
基于16进制的数被表示为一串16进制位的字串,结尾用H结束(比如 0F82EH).一个16进制位是以下字符集其中之一:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,and F.

基于2进制的数被一串0或1表示,有时用字符B结尾(比如 1010B).用字符”B”结尾仅仅为了避免不同数制带来的混乱。

1.3.5 段寻址
处理器使用字节寻址。这意味着内存被组织和访问就像一个字节的序列。不管一个或多个字节能否被访问,一个字节地址被用来定位一个或多个字节的内容。可以被访问的一片内存区域被称为地址空间。
处理器同样支持段寻址。这是一种寻址方式让程序可以有若干独立的地址空间,称为段。举例说,程序可以将它的代码(指令)和堆栈分割放在不同段中。代码寻址可能常常要引用代码空间,并且堆栈地址也可能会常常引用堆栈空间。下面的符号被用来表示用段寻址的一个字节地址:
段寄存器:字节地址(偏移)
比如,下面的字节地址要依据FF79偏移和段寄存器DS的内容来共同确定:
DS:FF79H
接下来段地址定义了一个在代码段中的地址。CS寄存器指向了代码段和EIP共同确定的一个指令地址。
CS:EIP

1.3.6 对于 CPUID,CR以及MSR值的一个新语法





#2


以上图略。

#3


mark

#4



学习

#5


路过...

#6


想参与,只可惜没时间没电脑。。。
OMG,大一下开学就十分BT,估计以后还得老老实实学习。。。

#7


话说以前大一上学期搞过一两章的翻译,后来发现自己所学的太少,很多东西都跟不上,所以还是放弃了,Intel那五本大书现在估计在某个角落里吸收灰尘去了。。。

#8


顶一下

#9


我参加。

#10


已经有人翻译了
一直没有时间参加
不过还是想翻译点,顺便学习

#11


我已经申请加群了,希望楼主通过验证,昵称:IA-32&IA-64,谢谢

#12


我也來點吧, 希望有個好的協調者.[已申請]

#13


进去咧~~看看能不能挑起俺滴性趣。。。。哦不,兴趣

#14


Intel真小气,这么点东西也不肯出钱翻译一下,一共就几百页的东西,不用微软1/10的劲头就解决了。

#15


顶啊!俺也试试

#16


完成后打算以什么方式发布?
给英特尔拿去卖钱?

#17


来晚了,现在报名还有效么?

#18


自我感觉英语水平不错,基础知识还是比较扎实的,非常愿意加入。

#19


现在还可以加入吗 我也想加入哦 \(^o^)/~

#20


随便下个翻译机器就能完成的事,算什么大工程

#21


'描述 Intel MMX 技术'? 因该这样读 Intel MMX技术描述,翻译质量欠缺有待提高

#22


引用 20 楼 wangshutao4 的回复:
随便下个翻译机器就能完成的事,算什么大工程

机器翻译的结果你敢看么?

#23


不错,不过水平太差就不荼毒了

#24


顶, 非常值得做一件事情!!!

不过我可能没有时间参与翻译了,但很愿意参与。 

#25


群不可用, 有没有你们发布信息的地方  在看雪查了一下,也没查到

#26


还是提高英语水平更有意义,因为英文原版的比中文译本更准确。

#27


群不可用呀,楼主,
我也想加入 

#28


支持 支持

#29


请问谁能给我中文版的《英特尔64和IA - 32架构软件开发人员手册集》这5本宝典。即使用钱买都可以,请联系我QQ:503368074

#30


呵呵,这样的中文书都出好几本了。

#1


暂时贴这么多吧:

IA-32 Intel 体系结构
软件开发者手册
卷1:基本体系结构

目录
第一章 关于本手册
1.1 本手册中的IA-32处理器 隐喻
1.2 卷1:基本体系结构 总览
1.3 符号约定
1.3.1 位和字节次序
1.3.2 保留位和软件兼容性
1.3.3 指令操作数
1.3.4 16进制和2进制数
1.3.5 段寻址
1.3.6 对于 CPUID,CR以及MSR值的一个新语法
1.4 参考文献

第二章 IA-32 INTEL 体系结构
第三章 基本执行环境
第四章 数据类型
第五章 指令集概要
第六章 过程调用,中断,异常
第七章 使用通用指令编程
第八章 使用X87 FPU 编程
第九章 使用 INTEL MMX 技术编程
第十章 使用 SIMD(单指令流多数据流)流扩展(SSE)编程
第十一章 使用 SIMD 流扩展2 编程
第十二章 使用 SIMD 流扩展3 编程
第十三章 输入/输出
第十四章 处理器标示和特征甄别
附录A 扩展标志寄存器交叉引用
附录B 扩展标志寄存器条件码
附录C 浮点异常概要
附录D 编写 X87 异常处理器的指导方针
附录E 编写 SIMD 浮点异常处理器的指导方针
图示索引
表索引



第1章 关于本手册
1.1 本手册中涉及的IA-32处理器
该手册包含的信息主要适用于最近的绝大多数IA-32处理器,包括: Pentium(奔腾)处理器,P6处理器族,Pentium M(移动奔腾)处理器,Intel Xeon(至强)处理器,Pentium D处理器,以及奔腾处理器的罕见版本。
P6处理器族是指基于P6族微结构的处理器,包括 Pentium Pro (高能奔腾),
Pentium II,Pentium III 处理器。Pentium 4,Intel Xeon 处理器,Pentium D 处理器,和 
Pentium 罕见版本的处理器是基于 Intel NetBurst 微结构。

1.2 卷1:基本体系结构 总览
本手册包含目录内容描述:

第1章 —— 关于本手册。给出IA-32 Intel 体系结构软件开发者手册 全3卷的总览。它同样描述了3本手册中的符号约定以及对于程序员和硬件设计者感兴趣的Intel 手册和文档的相关列表。

第2章 —— IA-32 INTEL 体系结构。介绍 IA-32 体系结构和基于该体系结构的处理器家族。它同样给出了一个关于建立在这些处理器上特征的总览和IA-32体系结构历史的摘要。

第3章 —— 基本执行环境。介绍了内存组织模块和被程序使用的寄存器集。

第4章 —— 数据类型。介绍了处理器提供的数据类型和寻址模式;提供一个实数,浮点数格式和浮点异常的总览。

第5章 —— 指令集概要。列出所有 IA-32 体系结构指令并分成若干技术组。

第6章 —— 过程调用,中断,异常。描述了过程栈和提供给过程调用,中断服务和异常的一些机制。

第7章 ¬—— 使用通用指令编程。描述了基本的在基本数据类型,通用和段寄存器上操作的装载,存储,程序控制,算数和串指令;同样描述了执行在保护模式的系统指令。

第8章 —— 使用X87 FPU 编程。描述了 x87 浮点单元,包括浮点寄存器和浮点数据类型;给出一个关于浮点指令集的总览,并且描述了处理器的浮点异常条件。

第9章 —— 使用 INTEL MMX 技术编程。描述 Intel MMX 技术,包括 MMX 寄存器和数据类型;同样也提供MMX指令集的一个总览。

第10章 —— SIMD(单指令流多数据流)流扩展(SSE)编程。描述 SSE 扩展,包括 XMM 寄存器,MXCSR 寄存器以及打包单精度浮点数据类型;提供一个SSE指令集的总览并且给出了访问SSE扩展的代码。

第11章 —— 使用 SIMD 流扩展2 编程。描述了 SSE2 扩展,包括 XMM 寄存器,打包双精度数据类型;提供SSE2指令的一个总览。并且给出访问 SSE2 扩展的代码。这一章同样描述可被SSE和SSE2指令产生的SIMD 浮点异常。他同样阐述了对SSE和SSE2扩展在操作系统和应用程序中合并支持的通用方针。

第12章 —— 使用 SIMD 流扩展3 编程。描述 SSE3 扩展;提供一个SSE3指令集的总览,以及访问 SSE3 扩展的代码。

第13章 ¬—— 输入/输出。描述了处理器的I/O机制,包括I/O端口寻址,I/O指令,以及I/O保护机制。

第14章 —— 处理器标示和特征甄别。描述了如何去甄别CPU的类型以及处理器上可用的特征。

附录A —— 扩展标志寄存器交叉引用。总结 IA-32体系如何影响EFLAGS(扩展标志寄存器) 寄存器中的标志。

附录B —— 扩展标志寄存器条件码。总结了条件跳转,移动以及基于条件码置位指令如何使用EFLAGS 寄存器中的条件码标志。

附录C —— 浮点异常概要。总结了由x87 FPU(浮点单元)和SSE/SSE2/SSE3 浮点指令引发的异常。

附录D —— 编写 X87 异常处理器的指导方针。描述了如何设计和编写MS-DOS兼容异常处理器去处理FPU的异常。(包括软件和硬件需求和汇编语言代码的例子)。该附录同样描述了编写健壮FPU异常处理器的通用技术。

附录E —— 编写 SIMD 浮点异常处理器的指导方针。给出编写处理由SSE/SSE2/SSE3浮点指令引发异常的异常处理器的若干方针。

1.3 符号约定
本手册使用特殊的符号来表示数据结构格式,指令的符号化描述表,以及16进制和2进制的数字。这些符号描述如下:

1.3.1 位和字节次序
数据结构在内存中的示意图里,较小的地址似乎朝向图的底端;地址向上增长。位的位置被从右向左计入。一个位集合中数字值相当于依据位位置增长的2的幂。IA-32处理器是“小尾”机器;这意味着一个字从其两个字节中最小的有意义的字节开始计数。见图1-1
 

1.3.2 保留位和软件兼容性
在一些寄存器和内存设计描述里,特定一些位被置为保留。其实这是为了未来处理器的兼容性而保留这些位。软件以在将来可能足够未知的影响对待这些位。这些保留位的行为应该被看作不仅仅是未定义而是不可预知的。
软件应该使用如下方针处理这些位:
• 不要在测试包含保留位寄存器的值中依赖任何这些位的状态,应该在测试前剔除这些保 留位。
• 不要在向内存或一个寄存器存储(赋值)时依赖于任何保留位的状态。
• 不要将私有保留的信息写入这些保留的位中。
• 当转载一个寄存器时,常常应该将文档中确定的值装载到保留位中或者根据该寄存器的 原先对应位的值重新装载这些保留位。

注意
避免任何软件在IA-32寄存器保留位上的依赖。在这些寄存器保留位上的依赖将会使处理器以未定义的行为处理这些位。程序依赖这些保留位将会冒处理器将来改变这些位的危险。

1.3.3 指令操作数
当指令被表示被符号化时,IA-32汇编语言的子集将会被使用。在这个子集中,一条指令有如下格式,

Label: mnemonic 参数1,参数2,参数3
其中:
•一个 label(标号)是紧接着后面冒号的一个标示。
•一个 mnemonic(记忆码)是一个关于一类相同功能的指令的操作码保留字。
•操作数 argument1,argument2,以及argument3是可选的。根据操作码可能有0个
至3个操作数。现今而言,他们不是寄存器的保留名字就是在程序其他地方分配的数据项名称。

当两个操作数出现在算数或逻辑指令时,右操作数是源操作数,左操作数成为目的操作数。
举例来说:
LOADREG: MOV EAX,SUBTOTAL
在该例中,LOADREG是一个标号,MOV是一个便于记忆的操作码的标示,EAX是目的操作数,SUBTOTAL源操作数。一些汇编语言将目的与源操作数的顺序颠倒过来。

1.3.3 16进制与2进制数
基于16进制的数被表示为一串16进制位的字串,结尾用H结束(比如 0F82EH).一个16进制位是以下字符集其中之一:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,and F.

基于2进制的数被一串0或1表示,有时用字符B结尾(比如 1010B).用字符”B”结尾仅仅为了避免不同数制带来的混乱。

1.3.5 段寻址
处理器使用字节寻址。这意味着内存被组织和访问就像一个字节的序列。不管一个或多个字节能否被访问,一个字节地址被用来定位一个或多个字节的内容。可以被访问的一片内存区域被称为地址空间。
处理器同样支持段寻址。这是一种寻址方式让程序可以有若干独立的地址空间,称为段。举例说,程序可以将它的代码(指令)和堆栈分割放在不同段中。代码寻址可能常常要引用代码空间,并且堆栈地址也可能会常常引用堆栈空间。下面的符号被用来表示用段寻址的一个字节地址:
段寄存器:字节地址(偏移)
比如,下面的字节地址要依据FF79偏移和段寄存器DS的内容来共同确定:
DS:FF79H
接下来段地址定义了一个在代码段中的地址。CS寄存器指向了代码段和EIP共同确定的一个指令地址。
CS:EIP

1.3.6 对于 CPUID,CR以及MSR值的一个新语法





#2


以上图略。

#3


mark

#4



学习

#5


路过...

#6


想参与,只可惜没时间没电脑。。。
OMG,大一下开学就十分BT,估计以后还得老老实实学习。。。

#7


话说以前大一上学期搞过一两章的翻译,后来发现自己所学的太少,很多东西都跟不上,所以还是放弃了,Intel那五本大书现在估计在某个角落里吸收灰尘去了。。。

#8


顶一下

#9


我参加。

#10


已经有人翻译了
一直没有时间参加
不过还是想翻译点,顺便学习

#11


我已经申请加群了,希望楼主通过验证,昵称:IA-32&IA-64,谢谢

#12


我也來點吧, 希望有個好的協調者.[已申請]

#13


进去咧~~看看能不能挑起俺滴性趣。。。。哦不,兴趣

#14


Intel真小气,这么点东西也不肯出钱翻译一下,一共就几百页的东西,不用微软1/10的劲头就解决了。

#15


顶啊!俺也试试

#16


完成后打算以什么方式发布?
给英特尔拿去卖钱?

#17


来晚了,现在报名还有效么?

#18


自我感觉英语水平不错,基础知识还是比较扎实的,非常愿意加入。

#19


现在还可以加入吗 我也想加入哦 \(^o^)/~

#20


随便下个翻译机器就能完成的事,算什么大工程

#21


'描述 Intel MMX 技术'? 因该这样读 Intel MMX技术描述,翻译质量欠缺有待提高

#22


引用 20 楼 wangshutao4 的回复:
随便下个翻译机器就能完成的事,算什么大工程

机器翻译的结果你敢看么?

#23


不错,不过水平太差就不荼毒了

#24


顶, 非常值得做一件事情!!!

不过我可能没有时间参与翻译了,但很愿意参与。 

#25


群不可用, 有没有你们发布信息的地方  在看雪查了一下,也没查到

#26


还是提高英语水平更有意义,因为英文原版的比中文译本更准确。

#27


群不可用呀,楼主,
我也想加入 

#28


支持 支持

#29


请问谁能给我中文版的《英特尔64和IA - 32架构软件开发人员手册集》这5本宝典。即使用钱买都可以,请联系我QQ:503368074

#30


呵呵,这样的中文书都出好几本了。