翻到了以前的一个程序,关于CPU寄存器验证的。

Peirre1年前我的程序192


这段代码有省略的地方,因为我的CPU并不太先进,所以有些就略过了。

这些不只是程序,还是资料可以参考。

[bits 64]
;---------------------
; CPU 寄存器的验证
;         by 超级蓝果
;---------------------

;
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;                                                                                                    
;        vL  isqjIi   rs rIXjsIk  iigviiiiVdii   SJJsZLJsV   iijvr     E    U     Yi     i           
;       uBBs  bQ  B   B   XQ  Bi  viBqvrJiVqii  BRi iBi iQg  YUBSi ukiiB  iSBB sSjBBkXr iBB BB vB    
;        KP   B   B  Bid  Vv BQv   g Ii Qiiii   BgiiiBiiiQM  viBiu   i B    Bi    Bv     dq BBQBB    
;       sgBi iYiEBi  XBr  BB  iQ   B Pr iiiiv   iUi iBi iI   diZ B ii  B    Bv uDiurMB   ii i i i    
;      is Bi Bi   B  ZI   Bvg gi   vidYiEdEgv   vYvPSBuDjvv  BiR B  ii B   JQD  dv  Qi               
;      kBiE  B    B  Rrv vQ iBB    B  B  Q  B     MB B UBv   B B B sYvPBs   B    KBB                 
;      BMBQiikBBQBq ivvsiB Vg vB  JB iQ iB  Br  UQL  B   RD  B B B    iB   iB  uZk  gM               
;         irriiiiii  ii    i      virrrrrirrrr  v    r    r            i   Ji  r     ii              
;
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

; IA-32处理器的关键特性
; 2004 Intel Pentium Processor 755
;   GP:32 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 4GB
; 2006 Intel Core Duo Processor T2600
;   GP:32 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 4GB
; 2008 Intel A_m Processor Z5xx series
;   GP:32 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 4GB
;----------------------------------------------------------------------------------------------------
; Intel 64处理器的关键特性
; 2004 64-bit Intel Xeon Processor with 800 MHz System Bus
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2005 64-bit Intel Xeon Processor MP with 8MB L3
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 1024GB
; 2005 Intel Pentium 4 Processor Extreme Edition Supporting Hyper-Threading Technology
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2005 Intel Pentium Processor Extreme Edition 840
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2005 Dual-Core Intel Xeon Processor 7041
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2005 Intel Pentium 4 Processor 672
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2006 Intel Pentium Processor Extreme Edition 955
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2006 Intel Core 2 Extreme Processor X6800
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2006 Intel Xeon Processor 5160
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2006 Intel Xeon Processor 7140
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2006 Intel Core 2 Extreme Processor QX6700
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2006 Quad-core Intel Xeon Processor 5355
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2007 Intel Core 2 Duo Processor E6850
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2007 Intel Xeon Processor 7350
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 1024GB
; 2007 Intel Xeon Processor 5472
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 256GB
; 2008 Intel A_n Processor
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr Up _ 64GB
; 2008 Intel Xeon Processor 7460
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 1024GB
; 2008 Intel A_n Processor 330
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr Up _ 64GB
; 2008 Intel Core i7-965 Processor Extreme Edition
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2010 Intel Core i7-620M Processor
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 64GB
; 2010 Intel Xeon Processor 5680
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 1TB
; 2010 Intel Xeon Processor 7560
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 16T
; 2011 Intel Core i7-2600K Processor
;   GP:32,64 FPU:80 MMX:64 XMM:128 YMM:256 Max.Ext.Addr 64GB ;++++++
; 2011 Intel Xeon Processor E3-1280
;   GP:32,64 FPU:80 MMX:64 XMM:128 YMM:256 Max.Ext.Addr 1TB
; 2011 Intel Xeon Processor E7-8870
;   GP:32,64 FPU:80 MMX:64 XMM:128 Max.Ext.Addr 16TB          ;------
;----------------------------------------------------------------------------------------------------
; 以前IA-32处理器的关键特性
; 1978 8086
;   16 GP Ext.Bus 16 Max.Ext.Addr 1MB
; 1982 Intel 286
;   16 GP Ext.Bus 16 Max.Ext.Addr 16MB
; 1985 Intel 386 DX Processor
;   32 GP Ext.Bus 16 Max.Ext.Addr 4GB
; 1989 Intel 486 DX Processor 
;   32 GP 80 FPU Ext.Bus 32 Max.Ext.Addr 4GB
; 1993 Pentium Processor 
;   32 GP 80 FPU Ext.Bus 64 Max.Ext.Addr 4GB
; 1995 Pentium Pro Processor 
;   32 GP 80 FPU Ext.Bus 64 Max.Ext.Addr 64GB
; 1997 Pentium II Processor 
;   32 GP 80 FPU 64 MMX Ext.Bus 64 Max.Ext.Addr 64GB
; 1999 Pentium III Processor
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 64GB
; 1999 Pentium III and Pentium III Xeon Processors
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 64GB
; 2000 Pentium 4 Processor 
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 64GB
; 2001 Intel Xeon Processor
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 64GB
; 2002 Intel Xeon Processor 
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 64GB
; 2003 Pentium M Processor
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 4GB
; 2004 Intel Pentium 4 Processor Supporing Hyper-Threading Technology at 90 nm Process
;   32 GP 80 FPU 64 MMX 128 XMM Ext.Bus 64 Max.Ext.Addr 64GB
;=====================================================================================================

[bits 64]
%include 'd:\radasm\nasm\inc\masm32.inc'

[extern StdOut]
[extern StrLen]
[extern printf]
[extern ClearScreen]
[extern getchar]
[extern ExitProcess] 

; 指令编码概要
; Intel 64 和 IA-32 指令说明格式 
; Mod 寄存器模式, Opcode 指令码, SIB 基础索引位移
;------------------------------------------------------------------------------------
; 指令附加     指令码      寄存器模组 SIB         地址数            立即数
;------------------------------------------------------------------------------------
; 升4位1字节 1-,2-,3-字节 1字节(如真) 1字节(如真) 地址1,2,4字节或无 数值1,2,4字节或无
;
;      ModR/M                   SIB
; 7 6 5        3 2 0        7   6 5   3 2  0
;-------------------------------------------
; Mod Reg/Opcode R/M        Scale Index Base
;-------------------------------------------

; 表格 REX 前缀段[位:0100WRXB]
;
; REX 寄存器位
;
; 段名 位 定义
;=======================================================
; -    7:4 0100
; W    3   0 = CS.D 操作数尺寸
;          1 = 64位操作尺寸
; R    2   扩展 ModR/M 寄存器段
; X    1   扩展 SIB 索引段
; B    0   扩展 ModR/M r/m 段,SIB基本段,指令码寄存器段

; 内存地址没用SIB字节;REX.X 没使用
;----------------------------------------------------
;                     ModRM Byte
; REX PREFIX  Opcode mod  reg  r/m
; 01000WR0B          <>11 rrr  bbb
;
;                        Rrrr Bbbb

; 内存地址使用SIB字节
;-----------------------------------------------------
;                     ModRM Byte    SIB Byte
; REX PREFIX  Opcode mod  reg  r/m scale index base
; 01000WRXB          <>11 rrr  100   ss   xxx   bbb
;
;                        Rrrr            Xxxx  Bbbb

; 寄存器操作码在指令码中;REX.X & REX.R没使用
;-----------------------------------------------------
;                     
; REX PREFIX  Opcode mod  reg 
; 01000W00B          <>11 bbb 
;
;                        Bbbb
;-----------------------------------------------------

; 指定多选REX加码
; ModR/M or SIB   子加码            完全操作模式 完全立即模式    附要
;------------------------------------------------------------------------------------
; ModR/M 字节     mod <> 11         SIB字节      SIB字节ESP基址 REX附加40位不解码
;                 r/m == b*100(ESP)                             SIB在R12基地上也正确
;------------------------------------------------------------------------------------
; ModR/M 字节     mod == 0          基寄存器没用 非EBP必用      REX附加40位不解码
;                 r/m == b*101(EBP)              mod = 01       用RBP或R13,非其它
;                                                               必须 mod = 01,其它为0
;------------------------------------------------------------------------------------
; SIB 字节        索引 == 0100(ESP) ESP不能用于                REX附加40位不解码
;                                    索引寄存器                 扩展索引 RSP在R12
;                                                               R12能用于索引
;------------------------------------------------------------------------------------
; SIB 字节        基础 == 0101(EBP)  基寄存器在mod加码          REX附加40位不解码
;                                                               被用于 EBP/RBP或R13
; 注:不考虑REX.B的值

; 例: 48 B8 8877665544332211    MOV RAX,1122334455667788H

; 内存段选
; 15      0     31                  0
; ----------    ---------------------
; |   段选 |    | 偏移(或直接地址)|
; ----------    ---------------------

; 64位模式内存段选
; 15      0     63                  0
; ----------    ---------------------
; |   段选 |    | 偏移(或直接地址)|
; ----------    ---------------------
[section .data]
n_16	db 0ffh,0ffh
n_32	db 0ffh,0ffh,0ffh,0ffh
n_64	db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
n_128	db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
n_256	dq 0ffffffffffffffffh,0ffffffffffffffffh,0ffffffffffffffffh,0ffffffffffffffffh
n_512	dq 0ffffffffffffffffh,0ffffffffffffffffh,0ffffffffffffffffh,0ffffffffffffffffh
		dq 0ffffffffffffffffh,0ffffffffffffffffh,0ffffffffffffffffh,0ffffffffffffffffh

To_8086		db '8位寄存器',0dh,0ah
			db '---------------------------------------------------------------',0dh,0ah,0
; rex.r = 0
_al		db 'AL = %X',0dh,0ah,0		;reg 段 0
_cl		db 'CL = %X',0dh,0ah,0		;reg 段 1
_dl		db 'DL = %X',0dh,0ah,0		;reg 段 2
_bl		db 'BL = %X',0dh,0ah,0		;reg 段 3
; 没有 rex
_ah		db 'AH = %X',0dh,0ah,0		;reg 段 4
_ch		db 'CH = %X',0dh,0ah,0		;reg 段 5
_dh		db 'DH = %X',0dh,0ah,0		;reg 段 6
_bh		db 'BH = %X',0dh,0ah,0		;reg 段 7
; 任何 rex
_spl	db 'SPL = %X',0dh,0ah,0		;reg 段 4
_bpl	db 'BPL = %X',0dh,0ah,0		;reg 段 5
_sil	db 'SIL = %X',0dh,0ah,0		;reg 段 6
_dil	db 'DIL = %X',0dh,0ah,0		;reg 段 7

; 仅用于64位模式 rex.r=1 的 R8-R15
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
_r8l	db 'R8L = %X',0dh,0ah,0		;reg 段 0
_r9l	db 'R9L = %X',0dh,0ah,0		;reg 段 1
_r10l	db 'R10L = %X',0dh,0ah,0	;reg 段 2
_r11l	db 'R11L = %X',0dh,0ah,0	;reg 段 3
_r12l	db 'R12L = %X',0dh,0ah,0	;reg 段 4
_r13l	db 'R13L = %X',0dh,0ah,0	;reg 段 5
_r14l	db 'R14L = %X',0dh,0ah,0	;reg 段 6
_r15l	db 'R15L = %X',0dh,0ah,0	;reg 段 7
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>		

; 和_r8l-_r15l 一样的
_r8b	db 'R8B = %X',0dh,0ah,0		;reg 段 0
_r9b	db 'R9B = %X',0dh,0ah,0		;reg 段 1
_r10b	db 'R10B = %X',0dh,0ah,0	;reg 段 2
_r11b	db 'R11B = %X',0dh,0ah,0	;reg 段 3
_r12b	db 'R12B = %X',0dh,0ah,0	;reg 段 4
_r13b	db 'R13B = %X',0dh,0ah,0	;reg 段 5
_r14b	db 'R14B = %X',0dh,0ah,0	;reg 段 6
_r15b	db 'R15B = %X',0dh,0ah,0	;reg 段 7
		
To_286	db '16位 寄存器',0dh,0ah
		db '---------------------------------------------------------------',0dh,0ah,0
_ax		db 'AX = %X',0dh,0ah,0		;reg 段 0
_cx		db 'CX = %X',0dh,0ah,0 		;reg 段 1
_dx		db 'DX = %X',0dh,0ah,0		;reg 段 2
_bx		db 'BX = %X',0dh,0ah,0		;reg 段 3
; rex.r = 0
_sp		db 'SP = %X',0dh,0ah,0		;reg 段 4
_bp		db 'BP = %X',0dh,0ah,0		;reg 段 5
_si		db 'SI = %X',0dh,0ah,0		;reg 段 6
_di		db 'DI = %X',0dh,0ah,0		;reg 段 7

_ip		db 'IP = %X',0dh,0ah,0

; 仅用于64位模式 rex.r=1 的 R8-R15
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
_r8w	db 'R8w = %X',0dh,0ah,0		;reg 段 0
_r9w	db 'R9w = %X',0dh,0ah,0		;reg 段 1
_r10w	db 'R10w = %X',0dh,0ah,0	;reg 段 2
_r11w	db 'R11w = %X',0dh,0ah,0	;reg 段 3
_r12w	db 'R12w = %X',0dh,0ah,0	;reg 段 4
_r13w	db 'R13w = %X',0dh,0ah,0	;reg 段 5
_r14w	db 'R14w = %X',0dh,0ah,0	;reg 段 6
_r15w	db 'R15w = %X',0dh,0ah,0	;reg 段 7
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;---------------------------------------------------------------------------------------
To_386	db '32位 寄存器',0dh,0ah
		db '---------------------------------------------------------------',0dh,0ah,0
_eax	db 'EAX = %X',0dh,0ah,0		;reg 段 0
_ecx	db 'ECX = %X',0dh,0ah,0		;reg 段 1
_edx	db 'EDX = %X',0dh,0ah,0		;reg 段 2
_ebx	db 'EBX = %X',0dh,0ah,0		;reg 段 3
; rex.r = 0
_esp	db 'ESP = %X',0dh,0ah,0		;reg 段 4
_ebp	db 'EBP = %X',0dh,0ah,0		;reg 段 5
_esi	db 'ESI = %X',0dh,0ah,0		;reg 段 6
_edi	db 'EDI = %X',0dh,0ah,0		;reg 段 7

; 32位 寄存器
; EFLAGS 寄存器
; 比较位单元

;|<--------------------------------    PUSHFD/POPFD   ------------------------------->|                       
;|                                                |<--------    PUSHF/POPF   -------->|  
; 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
;---------------------------------------------------------------------------------------
;  0  0  0  0  0  0  0  0  0  0  I  V  V  A  V  R  0  N | I  | O  D I T S Z 0 A 0 P 1 C 
;                                D  I  I  C  M  F     T | O -| F  F F F F F   F   F   F
;                                   P  F                | P  |
;                                                       | L  |
;---------------------------------------------------------------------------------------
; X ID 标志 (ID)
; X 虚拟中断 (VIP)
; X 虚拟中断标志(VIF)
; X 对齐检查/访问控制(AC)
; X 虚8086模式(VM)
; X 挂起标志(RF)
; X 任务 (NT)
; X I/O 环级(IOPL)
; S 溢出标志(OF)
; C 连接标志(DF)
; X 开中断标志(IF)
; X 跟踪标志(TF)
; S 符号标志(SF)
; S 零标志(ZF)
; S BCD进位标志(AF)
; S 局部标志(PF)
; S 进位标志(CF)

; S 结构标志
; C 控制标志
; X 系统标志
; 0 没有使用这个值

_eflags	db 'EFLAGS = %X',0dh,0ah,0
_eip	db 'EIP = %X',0dh,0ah,0

;仅用于64位模式 rex.r=1 的 R8-R15
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
_r8d	db 'R8d = %X',0dh,0ah,0		;reg 段 0
_r9d	db 'R9d = %X',0dh,0ah,0		;reg 段 1
_r10d	db 'R10d = %X',0dh,0ah,0	;reg 段 2
_r11d	db 'R11d = %X',0dh,0ah,0	;reg 段 3
_r12d	db 'R12d = %X',0dh,0ah,0	;reg 段 4
_r13d	db 'R13d = %X',0dh,0ah,0	;reg 段 5
_r14d	db 'R14d = %X',0dh,0ah,0	;reg 段 6
_r15d	db 'R15d = %X',0dh,0ah,0	;reg 段 7
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

To_ia64	db '64位 寄存器',0dh,0ah
		db '---------------------------------------------------------------',0dh,0ah,0
_rax	db 'RAX = %X',0dh,0ah,0		;reg 段 0
_rcx	db 'RCX = %X',0dh,0ah,0		;reg 段 1
_rdx	db 'RDX = %X',0dh,0ah,0		;reg 段 2
_rbx	db 'RBX = %X',0dh,0ah,0		;reg 段 3
; rex.r = 0
_rsp	db 'RSP = %X',0dh,0ah,0		;reg 段 4
_rbp	db 'RBP = %X',0dh,0ah,0		;reg 段 5
_rsi	db 'RSI = %X',0dh,0ah,0		;reg 段 6
_rdi	db 'RDI = %X',0dh,0ah,0		;reg 段 7

_rflags	db 'RFLAGS = %X',0dh,0ah,0
; 在64位模式,RIP地址使用32位数计算下一指令,扩展值加到64位RIP值
_rip	db 'RIP = %X',0dh,0ah,0

;x87 FPU 数据寄存器
;符号79 扩充78-64 数值63-0
;控制寄存器15-0 过去指令指针47-0(FCS:FIP)
;结构寄存器15-0 过去数据指针47-0(FDS:FDP)
;标记寄存器15-0 指令码10-0

; FPU 数据寄存器堆栈
;-------------------------------------------------
; 堆栈 7
;  |   6
;  |   5   ST(2)
;  |   4   ST(1)     顶部
;  V   3   ST(0) <- |011b|
;      2
;      1
;      0

; 例子:
; 计算 (5.6 * 2.4) + (3.8 * 10.3)
; 代码:
; fld  value1 ;(a) value1 = 5.6
; fmul value2 ;(b) value2 = 2.4
; fld  value3 ;    value3 = 3.8
; fmul value4 ;(c) value4 = 10.3
; fadd st(1)  ;(d)
;
; (a)           (b)            (c)            (d)
; ------------  -------------  -------------  --------------
; R7            R7             R7             R7 
; R6            R6             R6             R6
; R5            R5             R5             R5
; R4 5.6 ST(0)  R4 13.44 ST(0) R4 13.44 ST(1) R4 13.44 ST(1)
; R3            R3             R3 39.14 ST(0) R3 52.58 ST(0)
; R2            R2             R2             R2
; R1            R1             R1             R1
; R0            R0             R0             R0
; ------------  -------------- -------------- --------------

;x87 FPU 结构寄存器
;   --------------  FPU 忙
;   |      v------  栈顶指针
;  15 14 13  11 10 9 8 7 6 5 4 3 2 1 0
;  ------------------------------------
;  |B| C| _P |  C|C|C|E|S|P|U|O|Z|D|I|
;  | | 3|     |  2|1|0|S|F|E|E|E|E|E|E|
;  ------------------------------------
;      |         | | | | | | | | | | |
; 代码---------------- | | | | | | | |
; 异常结构-------------- | | | | | | |
; 堆栈特质---------------- | | | | | |
; 异常标志------------------ | | | | |
;  精度 ---------------------- | | | |
;  溢出 ------------------------ | | |
;  零除 -------------------------- | |
;  数据操作 ------------------------ |
;  错误操作 --------------------------

;x87 FPU 控制字
;            ----------------  初控制
;            |   ------------  环控制
;   |        |   |    v------  精度控制
;  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
;  --------------------------------------
;  | |  |  | X|  RC | PC| | |P|U|O|Z|D|I|
;  | |  |  |  |     |   | | |M|M|M|M|M|M|
;  --------------------------------------
;                            | | | | | |
;                            | | | | | |
;                            | | | | | |
;                            | | | | | |
; 异常屏蔽                   | | | | | |
;  精度 ---------------------- | | | | |
;  未明 ------------------------ | | | |
;  溢出 -------------------------- | | |
;  零除 ---------------------------- | |
;  数据操作 -------------------------- |
;  错误操作 ----------------------------
;
; x87 FPU 初始化指令 finit/fninit 或 fsave/fnsave,初始值为 037fh
;         作用:屏蔽所有浮点异常,设置近环和设置FPU为64位精度
;
; 精度控制段      (PC)
; ----------------------
; 精度            | PC段
; ----------------+-----
; 单精度 (24位)   |  00b
; 保留            |  01b
; 双精度 (53位)   |  10b
; 双精度扩展(64位)|  11b 
; ----------------------

; 环模式编码控制段(RC)
; ----------------------
; 环模式|RC设置|描述  
; ------+------+--------
; 近环  |  00b |
; 下环  |  01b |
; 上环  |  10b |
; 零塔环|  11b |
; ----------------------

_r0		db 'R8 = %X',0dh,0ah,0		;reg 段 0
_r1		db 'R9 = %X',0dh,0ah,0		;reg 段 1
_r2		db 'R10 = %X',0dh,0ah,0		;reg 段 2
_r3		db 'R11 = %X',0dh,0ah,0		;reg 段 3
_r4		db 'R12 = %X',0dh,0ah,0		;reg 段 4
_r5		db 'R13 = %X',0dh,0ah,0		;reg 段 5
_r6		db 'R14 = %X',0dh,0ah,0		;reg 段 6
_r7		db 'R15 = %X',0dh,0ah,0		;reg 段 7

; 仅用于64位模式 rex.r=1 的 R8-R15
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
_r8		db 'R8 = %X',0dh,0ah,0		;reg 段 0
_r9		db 'R9 = %X',0dh,0ah,0		;reg 段 1
_r10	db 'R10 = %X',0dh,0ah,0		;reg 段 2
_r11	db 'R11 = %X',0dh,0ah,0		;reg 段 3
_r12	db 'R12 = %X',0dh,0ah,0		;reg 段 4
_r13	db 'R13 = %X',0dh,0ah,0		;reg 段 5
_r14	db 'R14 = %X',0dh,0ah,0		;reg 段 6
_r15	db 'R15 = %X',0dh,0ah,0		;reg 段 7
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_lip	db 'LIP = %X',0dh,0ah,0
; 使用RS_RSSP 和SAVEPREVSSP指令操作影子栈在64位格式值上
; 例:SSP = 1000h 新影子栈 地址 3ff8h,出影子栈后为 4000h, 1000h成为旧的SSP值
_ssp	db 'SSP = %X',0dh,0ah,0

To_16f	db '16位 段寄存器',0dh,0ah
		db '---------------------------------------------------------------',0dh,0ah,0
_cs		db 'CS = %X',0dh,0ah,0
_ds		db 'DS = %X',0dh,0ah,0
_es		db 'ES = %X',0dh,0ah,0	
_ss		db 'SS = %X',0dh,0ah,0
_fs		db 'FS = %X',0dh,0ah,0
_gs		db 'GS = %X',0dh,0ah,0

; MS-DOS 完全模式浮点寄存器
; CR0.NE[5位]设1,主模式有异常,异常段ES标志进fpu单元,标符#MF
; 如 IGNNE#位脚不能访问那访问 FERR#位脚, 当 FERR#位脚访问或延时有个异常
; 可屏敝x87 fpu 单元,异常后进入MMX单元
; FERR#脚连接 可用 IRQ13中断,当 FERR#脚 被访问时 调用中断75h
; BIOS 的中断75h被NMI中断2设置使用
; IGNNE#位脚访问中止浮点错有一个异常
; 在软件中一个 wait/fwait 指令等待 iret 指令处理返回
; 不支持MMX指令cr0.em[2位]为0,异常(#UD)

; 例:
; 	...
; 	...
; 	mov eax,1
; 	cpuid
; 	test edx,00800000h ;EDX中23位设为1了吗?
; 	jnz
; 	...

_st0	db 'ST(0) = %X',0dh,0ah,0
_st1	db 'ST(1) = %X',0dh,0ah,0
_st2	db 'ST(2) = %X',0dh,0ah,0
_st3	db 'ST(3) = %X',0dh,0ah,0
_st4	db 'ST(4) = %X',0dh,0ah,0
_st5	db 'ST(5) = %X',0dh,0ah,0
_st6	db 'ST(6) = %X',0dh,0ah,0
_st7	db 'ST(7) = %X',0dh,0ah,0

;------------------------------------------
;
; fpu 和 MMX 两者之间的转换
; fpu 入点为00b,MMX寄存器为11b,可从64位到79位
; 早点的在MMX中的fpu结果会丢失
; fpu 中的_S栈顶设置0
; 使用FSAVE和FXSAVE 保存 fpu 入点结构
; EMMS指令可从x87换到MMX结构 

; MMX 寄存器
; 64位 数据类型
; EMMS单元
;;;;;;;; 扩展CPUID指令,测试支持,不识别异常(#UD)
;
; MMX 指令可用于
; 	数据转换
; 	计算
; 	比较
; 	复盖
; 	解包
; 	逻辑
; 	位移
; 	EMMS (入点使用时11b,一般值为00b)
;--------------------------------------------------------
; 注:用CPUID 01功能测试可用性! EDX.MMX [23位],设置0失效

; 开放MMX技术可用 EAX,EBX,等寄存器,MMX可用于64位结构体数据
; 在多任务操作系统环境中要保存和恢复MMX的设置结构
; 异常于执行浮点指令,内存超围,计算,int 16 辅助测试FERR#位脚

; 补:(扩展,没有必要了解)
;   机器码前缀 067h  内存操作
;   机器码前缀 0f0h  非法指令异常 (#UD)
;   机器码前缀 0f3h,0f2h,066h 不明结果,保留
;   机器码前缀 02eh,036h,03eh,026h,064h,065h,内存操作和未明结果
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; SSE SIMD 扩展
_mmx0	db 'MMX0 = %X',0dh,0ah,0
_mmx1	db 'MMX1 = %X',0dh,0ah,0
_mmx2	db 'MMX2 = %X',0dh,0ah,0
_mmx3	db 'MMX3 = %X',0dh,0ah,0
_mmx4	db 'MMX4 = %X',0dh,0ah,0
_mmx5	db 'MMX5 = %X',0dh,0ah,0
_mmx6	db 'MMX6 = %X',0dh,0ah,0
_mmx7	db 'MMX7 = %X',0dh,0ah,0

; XMM 寄存器
; 128位 数据类型
; SSE 扩展 cpuid.01h:edx.sse[25位]为1可用
; 128位数据寄存器 调用xmm寄存器于非64位模式,16个XMM寄存器可用于64位模式
; 32位的 MXCSR寄存器私控结构位用于XMM寄存器
; 128位包数据用于浮点数据类型,双精四字值
; mmx和xmm低位复用,使用MXCSR寄存器保存和恢复
; 数值支持指令和数据
; 扩展到cpuid指令
; 32位值时,分四个数据包加强媒体和通讯和大数等
; 大数组可用于浮点值和整型数据
; 高冲缓存数据流可进入MMX和出入MMX寄存器保存和测试
; SFENCE 排序保存私用控制内存类型
; 检测SSE 扩展后可用于,虚86模式,实模式,保护模式和所有IA-32执行模式
_xmm0	db 'XMM0 = %X',0dh,0ah,0
_xmm1	db 'XMM1 = %X',0dh,0ah,0
_xmm2	db 'XMM2 = %X',0dh,0ah,0
_xmm3	db 'XMM3 = %X',0dh,0ah,0
_xmm4	db 'XMM4 = %X',0dh,0ah,0
_xmm5	db 'XMM5 = %X',0dh,0ah,0
_xmm6	db 'XMM6 = %X',0dh,0ah,0
_xmm7	db 'XMM7 = %X',0dh,0ah,0

; 32位 寄存器
; 复位初始化值 1f80h
; SIMD浮点单元(简单指令多段数据执行模式)
; 标志和屏蔽SSE,SSE2,SSE3 SIMD 结构和控制信息的异常
; 控制SIMD操作
; 压入和释放0标志为SIMD私有的浮点操作控制
; 用 STMXCSR 和STMXCSR 和 FXRS_R 和 FXSAVE 从内存中保存和读取到寄存器
; 16位到31位保留位不为空值,使用保存和读取指令 FXRS_R,LDMXCSR指令会有个常规(#GP)保护异常
;;;;;;;;;;;;;; MXCSR的DAZ标志位检查支持

; 128位 SIMD 数据例子:
;1:
; 	...
; 	movaps	xmm0,[eax]	;单浮点
; 	movaps	xmm1,[ebx]
; 	addpd	xmm0,xmm1
; 	...

;2:
; 	...
;	 movapd	xmm0,[eax]	;双浮点
;	 movaps	xmm1,[ebx]
; 	 xorpd	xmm0,xmm1
; 	...


;MXCSR 控制/结构寄存器
; 31                                   16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
; ------------------------------------------------------------------------------
; |                                      | F|  R  | P| U| O|Z|D|I|D|P|U|O|Z|D|I|
; |           保留                       | T|  C  | M| M| M|M|M|M|A|E|E|E|E|E|E|
; |                                      | Z|     |  |  |  | | | |Z| | | | | | |
; ------------------------------------------------------------------------------
;                                         |    |    |  |  | | | | | | | | | | |
; 压入零代码-------------------------------    |    |  |  | | | | | | | | | | |
; 环控制    ------------------------------------    |  |  | | | | | | | | | | |
; 精度屏蔽  -----------------------------------------  |  | | | | | | | | | | |
; 未明屏蔽  --------------------------------------------  | | | | | | | | | | |
; 溢出屏蔽  ----------------------------------------------- | | | | | | | | | |
; 除零屏蔽  ------------------------------------------------- | | | | | | | | |
; 零数值屏蔽--------------------------------------------------- | | | | | | | |
; 错误操作数----------------------------------------------------- | | | | | | |
; 零数值区  ------------------------------------------------------- | | | | | |
; 精度标志  --------------------------------------------------------- | | | | |
; 未明标志  ----------------------------------------------------------- | | | |
; 溢出标志  ------------------------------------------------------------- | | |
; 零除标志  --------------------------------------------------------------- | |
; 数值标志  ----------------------------------------------------------------- |
; 错误操作标志 ----------------------------------------------------------------
_mxcsr	db 'MXCSR = %X',0dh,0ah,0

_cr0	db 'CR0 = %X',0dh,0ah,0
_cr2	db 'CR2 = %X',0dh,0ah,0
_cr3	db 'CR3 = %X',0dh,0ah,0
_cr4	db 'CR4 = %X',0dh,0ah,0

_gdtr	db 'GDTR = %X',0dh,0ah,0
_ldtr	db 'LDTR = %X',0dh,0ah,0
_idtr	db 'IDTR = %X',0dh,0ah,0

_dr0	db 'DR0 = %X',0dh,0ah,0
_dr1	db 'DR1 = %X',0dh,0ah,0
_dr2	db 'DR2 = %X',0dh,0ah,0
_dr3	db 'DR3 = %X',0dh,0ah,0
_dr6	db 'DR6 = %X',0dh,0ah,0
_dr7	db 'DR7 = %X',0dh,0ah,0

_msr	db 'MSR = %X',0dh,0ah,0

;在IA-32e 模式 CR9-CR15和 DR8-DR15 没立即数会有指令异常(#UD)
_cr8	db 'CR8 = %X',0dh,0ah,0        ;在64位模式 CR8是私有任务寄存器(TPR)
;.........................................
_cr9	db 'CR9 = %X',0dh,0ah,0         
_cr10	db 'CR10 = %X',0dh,0ah,0
_cr11	db 'CR11 = %X',0dh,0ah,0
_cr12	db 'CR12 = %X',0dh,0ah,0
_cr13	db 'CR13 = %X',0dh,0ah,0
_cr14	db 'CR14 = %X',0dh,0ah,0
_cr15	db 'CR15 = %X',0dh,0ah,0

; 调试寄存器
_dr8	db 'DR8 = %X',0dh,0ah,0
_dr9	db 'DR9 = %X',0dh,0ah,0
_dr10	db 'DR10 = %X',0dh,0ah,0
_dr11	db 'DR11 = %X',0dh,0ah,0
_dr12	db 'DR12 = %X',0dh,0ah,0
_dr13	db 'DR13 = %X',0dh,0ah,0
_dr14	db 'DR14 = %X',0dh,0ah,0
_dr15	db 'DR15 = %X',0dh,0ah,0

;-----------------------------------------------------------------------

; 128位 数据类型
; SSE 64位模式和完全模式 (SSE扩展)
; SSE2 SSE3/SSSE3 程序环境
; CPUID.01h:EDX.SSE2 [26位]为1 支持SSE2扩展为128位数据处理
; cr4.osfxsr[9位]和cr4.osxmmexcpt[10位]被操作系统设置后可跳过指令FXSAVE
;      和FXRS_R指令和SIMD浮点异常
;  LFENCE,MFENCE,SFENCE 用PASUE指令等待一个超级wait循环
; 用于 数据移动
;      数学指令计算
;      逻辑指令计算
;      比较指令计算
;      位移指令计算
;      复盖指令
; SSE扩展 64位SIMD整型指令可用XMM寄存器寻址128位内存
; 注: cpuid.01h:edx.fxsr[24位]为1 支持FXSAVE和FXRS_R指令
;                                      FNSAVE,FSAVE指令

; 补:
;   PREFETCHT0 取高速缓存临时数据
;   PREFETCHT1 取高速缓存级别2数据
;   PREFETCHT2 取高速缓存级别2数据
;   PREFETCHTA 取最小高速缓存数据
;   前缀 2eh,3eh 隐含私有测试开发,用于跳转和级别指令
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; XMM8-XMM15 用REX.R 进入64位模式使用
_xmm8	db 'XMM8 = %X',0dh,0ah,0
_xmm9	db 'XMM9 = %X',0dh,0ah,0
_xmm10	db 'XMM10 = %X',0dh,0ah,0
_xmm11	db 'XMM11 = %X',0dh,0ah,0
_xmm12	db 'XMM12 = %X',0dh,0ah,0
_xmm13	db 'XMM13 = %X',0dh,0ah,0
_xmm14	db 'XMM14 = %X',0dh,0ah,0
_xmm15	db 'XMM15 = %X',0dh,0ah,0

; 256位 YMM 寄存器
_ymm0	db 'YMM0 = %X',0dh,0ah,0
_ymm1	db 'YMM1 = %X',0dh,0ah,0
_ymm2	db 'YMM2 = %X',0dh,0ah,0
_ymm3	db 'YMM3 = %X',0dh,0ah,0
_ymm4	db 'YMM4 = %X',0dh,0ah,0
_ymm5	db 'YMM5 = %X',0dh,0ah,0
_ymm6	db 'YMM6 = %X',0dh,0ah,0
_ymm7	db 'YMM7 = %X',0dh,0ah,0

; YMM8-YMM15 进入64位模式使用
_ymm8	db 'YMM8 = %X',0dh,0ah,0
_ymm9	db 'YMM9 = %X',0dh,0ah,0
_ymm10	db 'YMM10 = %X',0dh,0ah,0
_ymm11	db 'YMM11 = %X',0dh,0ah,0
_ymm12	db 'YMM12 = %X',0dh,0ah,0
_ymm13	db 'YMM13 = %X',0dh,0ah,0
_ymm14	db 'YMM14 = %X',0dh,0ah,0
_ymm15	db 'YMM15 = %X',0dh,0ah,0

; 256位 YMM 寄存器
_ymm0_h	db 'YMM0 = %X',0dh,0ah,0
_ymm1_h	db 'YMM1 = %X',0dh,0ah,0
_ymm2_h	db 'YMM2 = %X',0dh,0ah,0
_ymm3_h	db 'YMM3 = %X',0dh,0ah,0
_ymm4_h	db 'YMM4 = %X',0dh,0ah,0
_ymm5_h	db 'YMM5 = %X',0dh,0ah,0
_ymm6_h	db 'YMM6 = %X',0dh,0ah,0
_ymm7_h	db 'YMM7 = %X',0dh,0ah,0

; 64位字模式
; YMM8-YMM15 进入64位模式使用
_ymm8_h	db 'YMM8 = %X',0dh,0ah,0
_ymm9_h	db 'YMM9 = %X',0dh,0ah,0
_ymm10_h	db 'YMM10 = %X',0dh,0ah,0
_ymm11_h	db 'YMM11 = %X',0dh,0ah,0
_ymm12_h	db 'YMM12 = %X',0dh,0ah,0
_ymm13_h	db 'YMM13 = %X',0dh,0ah,0
_ymm14_h	db 'YMM14 = %X',0dh,0ah,0
_ymm15_h	db 'YMM15 = %X',0dh,0ah,0

; RDX:RAX 128位操作

; INTEL AVX 指令 VEX 附加前缀
; VEX.vvvv
; R8/R8d - R15/R15d 传统/完全32位模式不可用
; XMM0/YMM0 - XMM7/YMM7 传统/完全32位模式可用
; XMM8/YMM8 - XMM15/YMM15 传统/完全32位模式不可用

; INTEL AVX-512 编码
; EVEX

;================================================================================
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 512位 ZMM 寄存器 新寄存器
_zmm0	db 'ZMM0 = %X',0dh,0ah,0
_zmm1	db 'ZMM1 = %X',0dh,0ah,0
_zmm2	db 'ZMM2 = %X',0dh,0ah,0
_zmm3	db 'ZMM3 = %X',0dh,0ah,0
_zmm4	db 'ZMM4 = %X',0dh,0ah,0
_zmm5	db 'ZMM5 = %X',0dh,0ah,0
_zmm6	db 'ZMM6 = %X',0dh,0ah,0
_zmm7	db 'ZMM7 = %X',0dh,0ah,0

;
_zmm8	db 'ZMM8 = %X',0dh,0ah,0
_zmm9	db 'ZMM9 = %X',0dh,0ah,0
_zmm10	db 'ZMM10 = %X',0dh,0ah,0
_zmm11	db 'ZMM11 = %X',0dh,0ah,0
_zmm12	db 'ZMM12 = %X',0dh,0ah,0
_zmm13	db 'ZMM13 = %X',0dh,0ah,0
_zmm14	db 'ZMM14 = %X',0dh,0ah,0
_zmm15	db 'ZMM15 = %X',0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_zmm_hi256	db  'ZMM_Hi256 = %X',0dh,0ah,0
_zmm0_h	db 'ZMM0_H = %X',0dh,0ah,0
_zmm1_h	db 'ZMM1_H = %X',0dh,0ah,0
_zmm2_h	db 'ZMM2_H = %X',0dh,0ah,0
_zmm3_h	db 'ZMM3_H = %X',0dh,0ah,0
_zmm4_h	db 'ZMM4_H = %X',0dh,0ah,0
_zmm5_h	db 'ZMM5_H = %X',0dh,0ah,0
_zmm6_h	db 'ZMM6_H = %X',0dh,0ah,0
_zmm7_h	db 'ZMM7_H = %X',0dh,0ah,0

;
_zmm8_h	db 'ZMM8_H = %X',0dh,0ah,0
_zmm9_h	db 'ZMM9_H = %X',0dh,0ah,0
_zmm10_h	db 'ZMM10_H = %X',0dh,0ah,0
_zmm11_h	db 'ZMM11_H = %X',0dh,0ah,0
_zmm12_h	db 'ZMM12_H = %X',0dh,0ah,0
_zmm13_h	db 'ZMM13_H = %X',0dh,0ah,0
_zmm14_h	db 'ZMM14_H = %X',0dh,0ah,0
_zmm15_h	db 'ZMM15_H = %X',0dh,0ah,0

; 64位模式
_hi16_zmm	db 'Hi16_ZMM = %X',0dh,0ah,0
_zmm16	db 'ZMM16 = %X',0dh,0ah,0
_zmm17	db 'ZMM17 = %X',0dh,0ah,0
_zmm18	db 'ZMM18 = %X',0dh,0ah,0
_zmm19	db 'ZMM19 = %X',0dh,0ah,0
_zmm20	db 'ZMM20 = %X',0dh,0ah,0
_zmm21	db 'ZMM21 = %X',0dh,0ah,0
_zmm22	db 'ZMM22 = %X',0dh,0ah,0
_zmm23	db 'ZMM23 = %X',0dh,0ah,0
_zmm24	db 'ZMM24 = %X',0dh,0ah,0
_zmm25	db 'ZMM25 = %X',0dh,0ah,0
_zmm26	db 'ZMM26 = %X',0dh,0ah,0
_zmm27	db 'ZMM27 = %X',0dh,0ah,0
_zmm28	db 'ZMM28 = %X',0dh,0ah,0
_zmm29	db 'ZMM29 = %X',0dh,0ah,0
_zmm30	db 'ZMM30 = %X',0dh,0ah,0
_zmm31	db 'ZMM31 = %X',0dh,0ah,0

; Intel MPX 支持
_bnd0	db 'BND0 = %X',0dh,0ah,0
_bnd1	db 'BND1 = %X',0dh,0ah,0
_bnd2	db 'BND2 = %X',0dh,0ah,0
_bnd3	db 'BND3 = %X',0dh,0ah,0

_pt		db 'PT = %X',0dh,0ah,0
_pkru	db 'PKRU = %X',0dh,0ah,0
_cet_u	db 'CET_U = %X',0dh,0ah,0
_cet_s	db 'CET_S = %X',0dh,0ah,0
_hdc	db 'HDC = %X',0dh,0ah,0
_hwp	db 'HWP = %X',0dh,0ah,0
[section .text]
start:
	xor rax,rax
	xor al,al
al_1:
	push rax
	lea rax,_al
	push rax
	call printf
	pop rax
	pop rax
	inc al
	test al,0ffh
	jnz al_1

	xor rax,rax,
	xor ah,ah
ah_1:
	push rax
	lea rax,_ah
	push rax
	call printf
	pop rax
	pop rax
	inc ah
	test ah,0ffh
	jnz ah_1

	xor rbx,rbx
	xor bl,bl
bl_1:
	push rbx
	lea rax,_bl
	push rax
	call printf
	pop rax
	pop rbx
	inc bl
	test bl,0ffh
	jnz bl_1
	
	xor rbx,rbx
	xor bh,bh
bh_1:
	push rbx
	lea rax,_bh
	push rax
	call printf
	pop rax
	pop rbx
	inc bh
	test bh,0ffh
	jnz bh_1
	
	xor rcx,rcx
	xor cl,cl
cl_1:
	push rcx
	lea rax,_cl
	push rax
	call printf
	pop rax
	pop rcx
	inc cl
	test cl,0ffh	
	jnz cl_1
		
	xor rcx,rcx
	xor ch,ch
ch_1:
	push rcx
	lea rax,_ch
	push rax
	call printf
	pop rax
	pop rcx
	inc ch
	test ch,0ffh
	jnz ch_1
		
	xor rdx,rdx
	xor dl,dl
dl_1:
	push rdx
	lea rax,_dl
	push rax
	call printf
	pop rax
	pop rdx
	inc dl
	test dl,0ffh
	jnz dl_1
		
	xor rdx,rdx
	xor dh,dh
dh_1:
	push rdx
	lea rax,_dh
	push rax
	call printf
	pop rax
	pop rdx
	inc dh
	test dh,0ffh
	jnz dh_1

	xor rax,rax
	xor ax,ax
ax_1:
	push rax
	lea rax,_ax
	push rax
	call printf
	pop rax
	pop rax
	inc ax
	test ax,0ffffh
	jnz bx_1
		
	xor rbx,rbx
	xor bx,bx
bx_1:
	push rbx
	lea rax,_bx
	push rax
	call printf
	pop rax
	pop rbx
	inc bx
	test bx,0ffffh
	jnz bx_1
		
	xor rcx,rcx
	xor bh,bh
cx_1:
	push rcx
	lea rax,_cx
	push rax
	call printf
	pop rax
	pop rcx
	inc cx
	test cx,0ffffh
	jnz cx_1
		
	xor rdx,rdx
	xor dx,dx
dx_1:
	push rdx
	lea rax,_dx
	push rax
	call printf
	pop rax
	pop rdx
	inc dx
	test dx,0ffffh
	jnz dx_1

;  汇编语言不能编译和识别的寄存器
;========================================
;     REX.B  REG段
;----------------------------------------
; SPL  是     4
; BPL  是     5
; SIL  是     6
; DIL  是     7
; 可以通过机器编码指令表计算出指令值
; ***** 具体计算公式看前面指令概要! *****
;========================================

;	xor rbp,rbp
;	xor bpl,bpl

; 汇编语言没有这个指令啊!!! CPU 有。
;bpl_1:
;	push rbp
;	call printf
;	inc bpl
;	jnc bpl_1

;	xor rsp,rsp
;	xor spl,spl
;spl_1:
;	push rsp
;	call printf
;	inc spl
;	jnc spl_1
	
;	xor rsi,rsi
;	xor sil,sil
;sil_1:
;	push rsi
;	call printf
;	inc sil
;	jnc sil_1
	
;	xor rdi,rdi
;	xor dil,dil
;dil_1:
;	push rdi
;	call printf
;	inc dil
;	jnc dil_1

	xor rax,rax
	xor eax,eax
eax_1:
	push rax
	lea rax,_eax
	push rax
	call printf
	pop rax
	pop rax
	mov eax,0ffffffffh	
	test eax,0ffffffffh
	push rax
	lea rax,_eax
	push rax
	call printf
	pop rax
	pop rax
	
	xor rbx,rbx
	xor ebx,ebx
ebx_1:
	push rbx
	lea rax,_ebx
	push rax
	call printf
	pop rax
	pop rbx
	mov ebx,0ffffffffh	
	test ebx,0ffffffffh
	push rbx
	lea rax,_ebx
	push rax
	call printf
	pop rax
	pop rbx
	
	xor rcx,rcx
	xor ecx,ecx
ecx_1:
	push rcx
	lea rax,_ecx
	push rax
	call printf
	pop rax
	pop rcx
	mov ecx,0ffffffffh	
	test ecx,0ffffffffh
	push rcx
	lea rax,_ecx
	push rax
	call printf
	pop rax
	pop rcx

	xor rdx,rdx
	xor edx,edx
edx_1:
	push rdx
	lea rax,_edx
	push rax
	call printf
	pop rax
	pop rdx
	mov edx,0ffffffffh	
	test edx,0ffffffffh
	push rdx
	lea rax,_edx
	push rax
	call printf
	pop rax
	pop rdx

edx_e:

	xor rsp,rsp
	xor esp,esp
esp_1:
	push rsp
	lea rax,_esp
	push rax
	call printf
	pop rax
	pop rsp
	mov esp,0ffffffffh
	test esp,0ffffffffh
	push rsp
	lea rax,_esp
	push rax
	call printf
	pop rax
	pop rsp

	xor rbp,rbp
	xor ebp,ebp
ebp_1:
	push rbp
	lea rax,_ebp
	push rax
	call printf
	pop rax
	pop rbp
	mov ebp,0ffffffffh	
	test ebp,0ffffffffh
	push rbp
	lea rax,_ebp
	push rax
	call printf
	pop rax
	pop rbp
	
	xor rsi,rsi
	xor esi,esi
esi_1:
	push rsi
	lea rax,_esi
	push rax
	call printf
	pop rax
	pop rsi
	mov esi,0ffffffffh
	test ebp,0ffffffffh

	xor rdi,rdi
	xor edi,edi
edi_1:
	push rdi
	lea rax,_edi
	push rax
	call printf
	pop rax
	pop rdi
	mov edi,0ffffffffh
	test edi,0ffffffffh
	push rdi
	lea rax,_edi
	push rax
	call printf
	pop rax
	pop rdi

	xor rax,rax
rax_1:
	push rax
	lea rax,_rax
	push rax
	call printf
	pop rax
	pop rax
	mov rax,0ffffffffffffffffh
	test rax,0ffffffffffffffffh
	push rax
	lea rax,_rax
	push rax
	call printf
	pop rax
	pop rax

	xor rcx,rcx
rcx_1:
	push rcx
	lea rax,_rcx
	push rax
	call printf
	pop rax
	pop rcx
	mov rcx,0ffffffffffffffffh
	test rcx,0ffffffffffffffffh
	push rcx
	lea rax,_rcx
	push rax
	call printf
	pop rax
	pop rcx

	xor rbx,rbx
rbx_1:
	push rbx
	lea rax,_rbx
	push rax
	call printf
	pop rax
	pop rbx
	mov rbx,0ffffffffffffffffh
	test rbx,0ffffffffffffffffh
	mov rbx,0ffffffffffffffffh
	push rbx
	lea rax,_rbx
	push rax
	call printf
	pop rax
	pop rbx
	
	xor rdx,rdx
rdx_1:
	push rdx
	lea rax,_rdx
	push rax
	call printf
	pop rax
	pop rdx
	mov rdx,0ffffffffffffffffh
	test rdx,0ffffffffffffffffh
	push rdx
	lea rax,_rdx
	push rax
	call printf
	pop rax
	pop rdx
	
	xor rbp,rbp
rbp_1:
	push rbp
	lea rax,_rbp
	push rax
	call printf
	pop rax
	pop rbp
	mov rbp,0ffffffffffffffffh
	test rbp,0ffffffffffffffffh
	push rbp
	lea rax,_rbp
	push rax
	call printf
	pop rax
	pop rbp
	
	xor rsp,rsp
rsp_1:
	push rsp
	lea rax,_rsp
	push rax
	call printf
	pop rax
	pop rsp
	mov rsp,0ffffffffffffffffh
	test rsp,0ffffffffffffffffh
	push rsp
	lea rax,_rsp
	push rax
	call printf
	pop rax
	pop rsp
	
	xor rdi,rdi
rdi_1:
	push rdi
	lea rax,_rdi
	push rax
	call printf
	pop rax
	pop rdi
	mov rdi,0ffffffffffffffffh
	test rdi,0ffffffffffffffffh
	push rdi
	lea rax,_rdi
	push rax
	call printf
	pop rax
	pop rdi

	xor rsi,rsi
rsi_1:
	push rsi
	lea rax,_rsi
	push rax
	call printf
	pop rax
	pop rsi
	mov rsi,0ffffffffffffffffh
	test rsi,0ffffffffffffffffh
	push rsi
	lea rax,_rsi
	push rax
	call printf
	pop rax
	pop rsi

; 新版本测试IP寄存器
;ip_1:
;	push ip
;	lea eax,_ip
;	push eax
;	call printf
;	pop eax
;	pop ip 

; 新版本测试	
;eip_1:
;	push eip
;	call printf

; 新版本测试	
;rip_1:
;	push rip
;	call printf

; 新版本测试
;cs_1:
;	push cs
;	call printf 

; 新版本测试
;ds_1:
;	push ds
;	call printf

; 新版本测试
;es_1:
;	push es
;	call printf

; 新版本测试
;fs_1:
;	push fs
;	call printf

; 新版本测试
;falg_1:
;	pushf
;	call printf

; 新版本测试
;eflag_1:
;	pushf
;	call printf

; 新版本测试
;rflag_1:
;	pushf
;	call printf

; 新版本测试 r0l-r7l
;r0l_1:
;	push r0l
;	lea rax,_r0l
;	push rax
;	call printf
;	pop rax
;	pop r0l
;	mov r0l,0ffffffffh
;	jnc r0l_1

;r1l_1:
;	push r1l
;	lea rax,_r1l
;	push rax
;	call printf
;	pop rax
;	pop r1l
;	mov r1l,0ffffffffh
;	jnc r1l_1

;r2l_1:
;	push r2l
;	lea rax,_r2l
;	push rax
;	call printf
;	pop rax
;	pop r2l
;	mov r2l,0ffffffffh
;	jnc r2l_1

;r3l_1:
;	push r3l
;	lea rax,_r3l
;	push rax
;	call printf
;	pop rax
;	pop r3l
;	mov r3l,0ffffffffh
;	jnc r3l_1

;r4l_1:
;	push r4l
;	lea rax,_r4l
;	push rax
;	call printf
;	pop rax
;	pop r4l
;	mov r4l,0ffffffffh
;	jnc r4l_1

;r5l_1:
;	push r5l
;	lea rax,_r5l
;	push rax
;	call printf
;	pop rax
;	pop r5l
;	mov r5l,0ffffffffh
;	jnc r5l_1

;r6l_1:
;   push r6l          
;   lea rax,_r6l      
;   push rax          
;   call printf 
;   pop rax
;   pop r6l
;   mov r6l,0ffffffffh
;   jnc r6l_1

;r7l_1:
;	push r7l
;	lea rax,_r7l
;	push rax
;	call printf
;	pop rax
;	pop r7l
;	mov r7l,0ffffffffh
;	jnc r7l_1

; 新版本nasm汇编再用 r0w-r7w 
;r0w_1:
;	push r0w
;	call printf

;r1w_1:
;	push r1w
;	call printf

;r2w_1:
;	push r2w
;	call printf

;r3w_1:
;	push r3w
;	call printf

;r4w_1:
;	push r4l
;	call printf

;r5w_1:
;	push r5l
;	call printf

;r6w_1:
;	push r6w
;	call printf

;r7w_1:
;	push r7w
;	call printf 
	
;	push r7l
;	lea rax,_r7l
;	push rax
;	call printf
;	pop rax
;	pop r7l
;	mov r7l,0ffffffffh
;	jnc r7l_1
r8w_1:
	push r8w
	lea rax,_r8w
	push rax
	call printf
	pop rax
	pop r8w
	jnc r8w_1
	
r9w_1:
	push r9w
	lea rax,_r9w
	push rax
	call printf
	pop rax
	pop r9w
	jnc r9w_1

r10w_1:
	push r10w
	lea rax,_r10w
	push rax
	call printf
	pop rax
	pop r10w
	jnc r10w_1

r11w_1:
	push r11w
	lea rax,_r11w
	push rax
	call printf
	pop rax
	pop r11w
	jnc r11w_1

r12w_1:
	push r12w
	lea rax,_r12w
	push rax
	call printf
	pop rax
	pop r12w
	jnc r12w_1

r13w_1:
	push r13w
	lea rax,_r13w
	push rax
	call printf
	pop rax
	pop r13w
	jnc r13w_1

r14w_1:
	push r14w
	lea rax,_r14w
	push rax
	call printf
	pop rax
	pop r14w
	jnc r14w_1

r15w_1:
	push r15w
	lea rax,_r15w
	push rax
	call printf
	pop rax
	pop r15w
	jnc r15w_1 

; 新版本支持 r0d-r7d  nasm汇编语言支持 
;r0d_1:
;	push r0d
;	call printf
;r1d_1:
;	push r1d
;	call printf
;r2d_1:
;	push r2d
;	call printf
;r3d_1:
;	push r3d
;	call printf
;r4d_1:
;	push r4d
;	call printf
;r5d_1:
;	push r5d
;	call printf
;r6d_1:
;	push r6d
;	call printf
;r7d_1:
;	push r7d
;	call printf

; 新版本支持 r0-r7  nasm汇编语言支持 
;r0_1:
;	push r0
;	call printf
;r1_1:
;	push r1
;	call printf
;r2_1:
;	push r2
;	call printf
;r3_1:
;	push r3
;	call printf
;r4_1:
;	push r4
;	call printf
;r5_1:
;	push r5
;	call printf
;r6_1:
;	push r6
;	call printf
;r7_1:
;	push r7
;	call printf

; 需要改进的测试方法
;st0_1:
;	push st0
;	call printf
;st1_1:
;	push st1
;	call printf
;st2_1:
;	push st2
;	call printf
;st3_1:
;	push st3
;	call printf
;st4_1:
;	push st4
;	call printf
;st5_1:
;	push st5
;	call printf
;st6_1:
;	push st6
;	call printf
;st7_1:
;	push st7
;	call printf

; 新版本支持,略过... mmx0-mmx31 nasm 汇编语言要支持
;   测试方法
;mmx0_1:
;	push mmx0
;	call printf
;mmx1_1:
;	push mmx1
;	call printf
;mmx2_1:
;	push mmx2
;	call printf
;mmx3_1:
;	push mmx3
;	call printf
;mmx4_1:
;	push mmx4
;	call printf
;mmx5_1:
;	push mmx5
;	call printf
;mmx6_1:
;	push mmx6
;	call printf
;mmx7_1:
;	push mmx7
;	call printf
;mmx8_1:
;	push mmx8
;	call printf
;mmx9_1:
;	push mmx9
;	call printf
;mmx10_1:
;	push mmx10
;	call printf
;mmx11_1:
;	push mmx11
;	call printf
;mmx12_1:
;	push mmx12
;	call printf
;mmx13_1:
;	push mmx13
;	call printf
;mmx14_1:
;	push mmx14
;	call printf
;mmx15_1:
;	push mmx15
;	call printf

xmm0_1:
	movups xmm0,[n_128]
	push rax
	lea rax,_xmm0
	push rax
	call printf
	pop rax
	pop rax
	
xmm1_1:
	movups xmm1,[n_128]
	push rax
	lea rax,_xmm1
	push rax
	call printf
	pop rax
	pop rax
	
xmm2_1:
	movups xmm2,[n_128]
	push rax
	lea rax,_xmm2
	push rax
	call printf
	pop rax
	pop rax
	
xmm3_1:
	movups xmm3,[n_128]
	push rax
	lea rax,_xmm3
	push rax
	call printf
	pop rax
	pop rax
	
xmm4_1:
	movups xmm4,[n_128]
	push rax
	lea rax,_xmm4
	push rax
	call printf
	pop rax
	pop rax
	
xmm5_1:
	movups xmm5,[n_128]
	push rax
	lea rax,_xmm5
	push rax
	call printf
	pop rax
	pop rax
	
xmm6_1:
	movups xmm6,[n_128]
	push rax
	lea rax,_xmm6
	push rax
	call printf
	pop rax
	pop rax
	
xmm7_1:
	movups xmm7,[n_128]
	push rax
	lea rax,_xmm7
	push rax
	call printf
	pop rax
	pop rax
	
xmm8_1:
	movups xmm8,[n_128]
	push rax
	lea rax,_xmm8
	push rax
	call printf
	pop rax
	pop rax
	
xmm9_1:
	movups xmm9,[n_128]
	push rax
	lea rax,_xmm9
	push rax
	call printf
	pop rax
	pop rax
	
xmm10_1:
	movups xmm10,[n_128]
	push rax
	lea rax,_xmm10
	push rax
	call printf
	pop rax
	pop rax
	
xmm11_1:
	movups xmm11,[n_128]
	push rax
	lea rax,_xmm11
	push rax
	call printf
	pop rax
	pop rax
	
xmm12_1:
	movups xmm12,[n_128]
	push rax
	lea rax,_xmm12
	push rax
	call printf
	pop rax
	pop rax
	
xmm13_1:
	movups xmm13,[n_128]
	push rax
	lea rax,_xmm13
	push rax
	call printf
	pop rax
	pop rax
	
xmm14_1:
	movups xmm14,[n_128]
	push rax
	lea rax,_xmm14
	push rax
	call printf
	pop rax
	pop rax
	
xmm15_1:
	movups xmm15,[n_128]
	push rax
	lea rax,_xmm15
	push rax
	call printf
	pop rax
	pop rax

ymm0_1:
	vmovups ymm0,[n_256]
	lea rax,_ymm0
	push rax
	call printf
	pop rax
	pop rax

ymm1_1:
	vmovups ymm1,[n_256]
	lea rax,_ymm1
	push rax
	call printf
	pop rax
	pop rax

ymm2_1:
	vmovups ymm2,[n_256]
	lea rax,_ymm2
	push rax
	call printf
	pop rax
	pop rax

ymm3_1:
	vmovups ymm3,[n_256]
	lea rax,_ymm3
	push rax
	call printf
	pop rax
	pop rax

ymm4_1:
	vmovups ymm4,[n_256]
	lea rax,_ymm4
	push rax
	call printf
	pop rax
	pop rax

ymm5_1:
	vmovups ymm5,[n_256]
	lea rax,_ymm5
	push rax
	call printf
	pop rax
	pop rax

ymm6_1:
	vmovups ymm6,[n_256]
	lea rax,_ymm6
	push rax
	call printf
	pop rax
	pop rax

ymm7_1:
	vmovups ymm7,[n_256]
	lea rax,_ymm7
	push rax
	call printf
	pop rax
	pop rax


ymm8_1:
	vmovups ymm8,[n_256]
	lea rax,_ymm8
	push rax
	call printf
	pop rax
	pop rax

ymm9_1:
	vmovups ymm9,[n_256]
	lea rax,_ymm9
	push rax
	call printf
	pop rax
	pop rax

ymm10_1:
	vmovups ymm10,[n_256]
	lea rax,_ymm10
	push rax
	call printf
	pop rax
	pop rax

ymm11_1:
	vmovups ymm11,[n_256]
	lea rax,_ymm11
	push rax
	call printf
	pop rax
	pop rax

ymm12_1:
	vmovups ymm12,[n_256]
	lea rax,_ymm12
	push rax
	call printf
	pop rax
	pop rax

ymm13_1:
	vmovups ymm13,[n_256]
	lea rax,_ymm13
	push rax
	call printf
	pop rax
	pop rax

ymm14_1:
	vmovups ymm14,[n_256]
	lea rax,_ymm14
	push rax
	call printf
	pop rax
	pop rax

ymm15_1:
	vmovups ymm15,[n_256]
	lea rax,_ymm15
	push rax
	call printf
	pop rax
	pop rax

; ++++++++++ 新增 ++++++++++

; 只有 AVX512 才有 改变高速缓存
; 参于操作的有xmm,ymm寄存器

;zmm0_1:
;	vgatherdps zmm0{k3},[ymm15*8]
;	lea rax,_zmm0
;	push rax
;	call printf
;	pop rax
	
;zmm1_1:
;	vgatherdps zmm1{k3},[ymm15*8]
;	lea rax,_zmm1
;	push rax
;	call printf
;	pop rax
	
;zmm2_1:
;	vgatherdps zmm2{k3},[ymm15*8]
;	lea rax,_zmm2
;	push rax
;	call printf
;	pop rax
	
;zmm3_1:
;	vgatherdps zmm3{k3},[ymm15*8]
;	lea rax,_zmm3
;	push rax
;	call printf
;	pop rax
	
;zmm4_1:
;	vgatherdps zmm4{k3},[ymm15*8]
;	lea rax,_zmm4
;	push rax
;	call printf
;	pop rax
	
;zmm5_1:
;	vgatherdps zmm5{k3},[ymm15*8]
;	lea rax,_zmm5
;	push rax
;	call printf
;	pop rax
	
;zmm6_1:
;	vgatherdps zmm6{k3},[ymm15*8]
;	lea rax,_zmm6
;	push rax
;	call printf
;	pop rax
	
;zmm7_1:
;	vgatherdps zmm7{k3},[ymm15*8]
;	lea rax,_zmm7
;	push rax
;	call printf
;	pop rax
	

;zmm8_1:
;	vgatherdps zmm8{k3},[ymm15*8]
;	lea rax,_zmm8
;	push rax
;	call printf
;	pop rax
	
;zmm9_1:
;	vgatherdps zmm9{k3},[ymm15*8]
;	lea rax,_zmm9
;	push rax
;	call printf
;	pop rax
	
;zmm10_1:
;	vgatherdps zmm10{k3},[ymm15*8]
;	lea rax,_zmm10
;	push rax
;	call printf
;	pop rax
	
;zmm11_1:
;	vgatherdps zmm11{k3},[ymm15*8]
;	lea rax,_zmm11
;	push rax
;	call printf
;	pop rax
	
;zmm12_1:
;	vgatherdps zmm12{k3},[ymm15*8]
;	lea rax,_zmm12
;	push rax
;	call printf
;	pop rax
	
;zmm13_1:
;	vgatherdps zmm13{k3},[ymm15*8]
;	lea rax,_zmm13
;	push rax
;	call printf
;	pop rax
	
;zmm14_1:
;	vgatherdps zmm0{k3},[ymm15*8]
;	lea rax,_zmm14
;	push rax
;	call printf
;	pop rax
	
;zmm15_1:
;	vgatherdps zmm15{k3},[ymm15*8]
;	lea rax,_zmm15
;	push rax
;	call printf
;	pop rax
	

;hi16_zmm1:	
;	vgatherdps hi16_zmm{k3},[ymm15*8]
;	lea rax,hi16_zmm
;	push rax
;	call printf
;	pop rax
	
		
;zmm16_1:
;	vgatherdps zmm16{k3},[ymm15*8]
;	lea rax,_zmm16
;	push rax
;	call printf
;	pop rax
	
;zmm17_1:
;	vgatherdps zmm17{k3},[ymm15*8]
;	lea rax,_zmm17
;	push rax
;	call printf
;	pop rax
	
;zmm18_1:
;	vgatherdps zmm18{k3},[ymm15*8]
;	lea rax,_zmm18
;	push rax
;	call printf
;	pop rax
	
;zmm19_1:
;	vgatherdps zmm19{k3},[ymm15*8]
;	lea rax,_zmm19
;	push rax
;	call printf
;	pop rax
	
;zmm20_1:
;	vgatherdps zmm20{k3},[ymm15*8]
;	lea rax,_zmm20
;	push rax
;	call printf
;	pop rax
	
;zmm21_1:
;	vgatherdps zmm21{k3},[ymm15*8]
;	lea rax,_zmm21
;	push rax
;	call printf
;	pop rax
	
;zmm22_1:
;	vgatherdps zmm22{k3},[ymm15*8]
;	lea rax,_zmm22
;	push rax
;	call printf
;	pop rax
	
;zmm23_1:
;	vgatherdps zmm23{k3},[ymm15*8]
;	lea rax,_zmm23
;	push rax
;	call printf
;	pop rax
	
;zmm24_1:
;	vgatherdps zmm24{k3},[ymm15*8]
;	lea rax,_zmm24
;	push rax
;	call printf
;	pop rax
	
;zmm25_1:
;	vgatherdps zmm25{k3},[ymm15*8]
;	lea rax,_zmm25
;	push rax
;	call printf
;	pop rax
	
;zmm26_1:
;	vgatherdps zmm26{k3},[ymm15*8]
;	lea rax,_zmm26
;	push rax
;	call printf
;	pop rax
	
;zmm27_1:
;	vgatherdps zmm27{k3},[ymm15*8]
;	lea rax,_zmm27
;	push rax
;	call printf
;	pop rax
	
;zmm28_1:
;	vgatherdps zmm28{k3},[ymm15*8]
;	lea rax,_zmm28
;	push rax
;	call printf
;	pop rax
	
;zmm29_1:
;	vgatherdps zmm29{k3},[ymm15*8]
;	lea rax,_zmm29
;	push rax
;	call printf
;	pop rax
	
;zmm30_1:
;	vgatherdps zmm30{k3},[ymm15*8]
;	lea rax,_zmm30
;	push rax
;	call printf
;	pop rax
	
;zmm31_1:
;	vgatherdps zmm31{k3},[ymm15*8]
;	lea rax,_zmm31
;	push rax
;	call printf
;	pop rax
	

; ymm0_h-ymm15_h 用于avx 技术系列
; 新版本支持 nasm汇编语言未识别 cpu类别不同
ymm0_h1:
;	push ymm0_h
;	call printf
ymm1_h1:

ymm2_h1:

ymm3_h1:

ymm4_h1:

ymm5_h1:

ymm6_h1:

ymm7_h1:

ymm8_h1:

ymm9_h1:

ymm10_h1:

ymm11_h1:

ymm12_h1:

ymm13_h1:

ymm14_h1:

ymm15_h1:


; zmm0_h-zmm15_h 用于avx 技术系列
; 新版本支持 nasm汇编语言未识别 cpu类别不同
zmm_hi256:

zmm0_h1:

zmm1_h1:

zmm2_h1:

zmm3_h1:

zmm4_h1:

zmm5_h1:

zmm6_h1:

zmm7_h1:

zmm8_h1:

zmm9_h1:

zmm10_h1:

zmm11_h1:

zmm12_h1:

zmm13_h1:

zmm14_h1:

zmm15_h1:

02.jpg

相关文章

阿里云后台的一个身份证信息查询工具。

阿里云后台的一个身份证信息查询工具。

注:此软件时效性已过,只在此陈列,没有什么意义。工具主图形界面有时会欠费,查不了时,请付1分钱给阿里云。下载地址:个人身份证阿里云查询.rar...

Radasm 编辑器配置VC2010下的Opencv 环境。

Radasm 编辑器配置VC2010下的Opencv 环境。

Opencv 下载地址:https://opencv.org/releases.html备用下载地址1:https://blog.csdn.net/yanzi1225627/article/detai...

关于ch341驱动,联动3D打印机USB串口通讯.

关于ch341驱动,联动3D打印机USB串口通讯.

手上有个3D打印机,搬家的原因,好久没用.天气热了,打印温度很适合,正好可以使用.又过了一年.发现linux 版本内核已经升级,和原来的系统不一样了. 按照3D打印机的说明,和寻找它的程序,原来的方法...

linux 下的 opengl SDK。

linux 下的 opengl SDK。

opengl 图形库是开放式图形库,最近出了一个freeglut3 我们下载它:sudo apt-get install freeglut3sudo apt-get install freeglut3...

关于DOSBOX的简单说明。

关于DOSBOX的简单说明。

linux 下的共享软件DOSBOX 在有些版本的linux 中不能使用鼠标。网上说明要换声卡地址和中断,连接鼠标端口才可以使用。 曾经设置过,可以使用参数不记得。有个解决方法。这是软件问题。 先卸载...

关于编译器不愿意说的那些事。

关于编译器不愿意说的那些事。

计算机发展了好多年。当中也不泛有很多对程序的爱好。很多人不是专业水平,也不是在算法类中特别出众,就是喜欢而已。好像认为自己就只那个水平,或者为一些调试不通过发愁。可以说,实际上都不是你的错,是编译器的...