Added New regs.pl, and associated modules
[nasm/perl-rewrite.git] / perl / lib / Nasm / Regs / Format / DC.pm
blob4640acca4d89999fe6a079952da85615ba87bad6
1 use strict;
2 use warnings;
3 package Nasm::Regs::Format::DC;
5 sub format{
6 my($regs) = @_;
7 my $filename = $regs->filename;
9 my $out = <<END;
10 /* automatically generated from $filename - do not edit */
12 #include "regdis.h"
14 END
16 my @classes = $regs->DisassemblerClasses;
18 for my $class (@classes){
19 my @regs = $regs->DisassemblerClass($class);
20 $out .= sprintf(
21 "const enum reg_enum nasm_rd_%-8s[%2d] = {",
22 $class,
23 scalar @regs
26 my @cc = map { 'R_'.uc($_->RegisterName) } @regs;
28 $out .= join ',', @cc;
29 $out .= "};\n";
33 return $out;
37 __END__
39 # Output regdis.c
40 print "/* automatically generated from $file - do not edit */\n\n";
41 print "#include \"regdis.h\"\n\n";
42 foreach $class ( sort(keys(%disclass)) ) {
43 printf "const enum reg_enum nasm_rd_%-8s[%2d] = {",
44 $class, scalar @{$disclass{$class}};
45 @foo = @{$disclass{$class}};
46 @bar = ();
47 for ( $i = 0 ; $i < scalar(@foo) ; $i++ ) {
48 if (defined($foo[$i])) {
49 push(@bar, "R_\U$foo[$i]\E");
50 } else {
51 die "$0: No register name for class $class, value $i\n";
54 print join(',', @bar), "};\n";