Added POD tests and a Perl::Critic test
[nasm/perl-rewrite.git] / perl / t / regs / order.t
blob55cddfd16dfc414156303d9acd76beff31ff0253
1 use strict;
2 use warnings;
3 use YAML::XS ':all';
6 use Test::More tests => 5;
9 my($dat_stream,@array);
11   local $/ = "\n...\n";
12   my $array;
13   ($array,$dat_stream) = <DATA>;
14   chomp $dat_stream;
15   chomp $array;
16   $array =~ s/^\s+//;
17   
18   (@array) = split '\s+', $array;
21 for( 1..5 ){
22   my @order = split '\n', `echo "$dat_stream" | perl regs.pl order -`;
23   is_deeply \@order, \@array;
25 __DATA__
26   ah al ax bh bl bp bpl bx ch cl
27   cr0 cr1 cr10 cr11 cr12 cr13 cr14 cr15 cr2 cr3 cr4 cr5 cr6 cr7 cr8 cr9
28   cs cx dh di dil dl
29   dr0 dr1 dr10 dr11 dr12 dr13 dr14 dr15 dr2 dr3 dr4 dr5 dr6 dr7 dr8 dr9
30   ds dx
31   eax ebp ebx ecx edi edx es esi esp
32   fs gs
33   mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7
34   r10 r10b r10d r10w
35   r11 r11b r11d r11w
36   r12 r12b r12d r12w
37   r13 r13b r13d r13w
38   r14 r14b r14d r14w
39   r15 r15b r15d r15w
40   r8 r8b r8d r8w
41   r9 r9b r9d r9w
42   rax rbp rbx rcx rdi rdx rsi rsp
43   segr6 segr7
44   si sil sp spl ss
45   st0 st1 st2 st3 st4 st5 st6 st7
46   tr0 tr1 tr2 tr3 tr4 tr5 tr6 tr7
47   xmm0 xmm1 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9
48   ymm0 ymm1 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9
49 ...
51 # List of registers and their classes; classes are defined in nasm.h
53 # The columns are:
55 # register name, assembler class, disassembler class(es), x86 register number
57 # If the register name ends in two numbers separated by a dash, then it is
58 # repeated as many times as indicated, and the register number is
59 # updated with it.
62 # General-purpose registers
63 al      REG_AL          reg8,reg8_rex   0
64 ah      REG_HIGH        reg8            4
65 ax      REG_AX          reg16           0
66 eax     REG_EAX         reg32           0
67 rax     REG_RAX         reg64           0
68 bl      REG8NA          reg8,reg8_rex   3
69 bh      REG_HIGH        reg8            7
70 bx      REG16NA         reg16           3
71 ebx     REG32NA         reg32           3
72 rbx     REG64NA         reg64           3
73 cl      REG_CL          reg8,reg8_rex   1
74 ch      REG_HIGH        reg8            5
75 cx      REG_CX          reg16           1
76 ecx     REG_ECX         reg32           1
77 rcx     REG_RCX         reg64           1
78 dl      REG_DL          reg8,reg8_rex   2
79 dh      REG_HIGH        reg8            6
80 dx      REG_DX          reg16           2
81 edx     REG_EDX         reg32           2
82 rdx     REG_RDX         reg64           2
83 spl     REG8NA          reg8_rex        4
84 sp      REG16NA         reg16           4
85 esp     REG32NA         reg32           4
86 rsp     REG64NA         reg64           4
87 bpl     REG8NA          reg8_rex        5
88 bp      REG16NA         reg16           5
89 ebp     REG32NA         reg32           5
90 rbp     REG64NA         reg64           5
91 sil     REG8NA          reg8_rex        6
92 si      REG16NA         reg16           6
93 esi     REG32NA         reg32           6
94 rsi     REG64NA         reg64           6
95 dil     REG8NA          reg8_rex        7
96 di      REG16NA         reg16           7
97 edi     REG32NA         reg32           7
98 rdi     REG64NA         reg64           7
99 r8-15b  REG8NA          reg8_rex        8
100 r8-15w  REG16NA         reg16           8
101 r8-15d  REG32NA         reg32           8
102 r8-15   REG64NA         reg64           8
104 # Segment registers
105 cs      REG_CS          sreg            1
106 ds      REG_DESS        sreg            3
107 es      REG_DESS        sreg            0
108 ss      REG_DESS        sreg            2
109 fs      REG_FSGS        sreg            4
110 gs      REG_FSGS        sreg            5
111 segr6-7 REG_SEG67       sreg            6
113 # Control registers
114 cr0-15  REG_CREG        creg            0
116 # Debug registers
117 dr0-15  REG_DREG        dreg            0
119 # Test registers
120 tr0-7   REG_TREG        treg            0
122 # Floating-point registers
123 st0     FPU0            fpureg          0
124 st1-7   FPUREG          fpureg          1
126 # MMX registers
127 mm0-7   MMXREG          mmxreg          0
129 # SSE registers
130 xmm0    XMM0            xmmreg          0
131 xmm1-15 XMMREG          xmmreg          1
133 # AVX registers
134 ymm0    YMM0            ymmreg          0
135 ymm1-15 YMMREG          ymmreg          1