Added POD tests and a Perl::Critic test
[nasm/perl-rewrite.git] / perl / lib / Nasm / Regs / Format / DC.pm
blob51af7bf50725163902011e86ba03cd5b5e69ac1a
1 =head1 NAME
3 Nasm::Regs::Format::DC
5 =cut
7 package Nasm::Regs::Format::DC;
8 use strict;
9 use warnings;
11 sub _format{
12 my($regs) = @_;
13 my $filename = $regs->filename;
15 my $out = <<END;
16 /* automatically generated from $filename - do not edit */
18 #include "regdis.h"
20 END
22 my @classes = $regs->DisassemblerClasses;
24 for my $class (@classes){
25 my @regs = $regs->DisassemblerClass($class);
26 $out .= sprintf(
27 "const enum reg_enum nasm_rd_%-8s[%2d] = {",
28 $class,
29 scalar @regs
32 my @cc = map { 'R_'.uc($_->RegisterName) } @regs;
34 $out .= join ',', @cc;
35 $out .= "};\n";
39 return $out;
43 __END__
45 # Output regdis.c
46 print "/* automatically generated from $file - do not edit */\n\n";
47 print "#include \"regdis.h\"\n\n";
48 foreach $class ( sort(keys(%disclass)) ) {
49 printf "const enum reg_enum nasm_rd_%-8s[%2d] = {",
50 $class, scalar @{$disclass{$class}};
51 @foo = @{$disclass{$class}};
52 @bar = ();
53 for ( $i = 0 ; $i < scalar(@foo) ; $i++ ) {
54 if (defined($foo[$i])) {
55 push(@bar, "R_\U$foo[$i]\E");
56 } else {
57 die "$0: No register name for class $class, value $i\n";
60 print join(',', @bar), "};\n";