t-m68k-defs.pl
上传用户:qaz666999
上传日期:2022-08-06
资源大小:2570k
文件大小:2k
源码类别:

数学计算

开发平台:

Unix_Linux

  1. #! /usr/bin/perl -w
  2. # Copyright 2001, 2003 Free Software Foundation, Inc.
  3. #
  4. # This file is part of the GNU MP Library.
  5. #
  6. # The GNU MP Library is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU Lesser General Public License as published by
  8. # the Free Software Foundation; either version 3 of the License, or (at your
  9. # option) any later version.
  10. #
  11. # The GNU MP Library is distributed in the hope that it will be useful, but
  12. # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  13. # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
  14. # License for more details.
  15. #
  16. # You should have received a copy of the GNU Lesser General Public License
  17. # along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
  18. # Usage:  perl t-m68k-defs.pl [-t]
  19. #
  20. # Run this in the mpn/m68k source directory to check that m68k-defs.m4 has
  21. # m68k_defbranch()s or m68k_definsn()s for each instruction used in *.asm
  22. # and */*.asm.  Print nothing if everything is ok.  The -t option prints
  23. # some diagnostic traces.
  24. use strict;
  25. use Getopt::Std;
  26. my %opt;
  27. getopts('t', %opt);
  28. my %branch;
  29. my %insn;
  30. open(FD, "<m68k-defs.m4")
  31.     or die "Cannot open m68k-defs.m4: $!nIs this the mpn/m68k source directory?n";
  32. my ($srcdir, $top_srcdir);
  33. while (<FD>) {
  34.     if (/^m68k_defbranch(s*(.*))/) { $branch{"b".$1} = 1; }
  35.     if (/^m68k_definsn(s*(.*),s*(.*))/) { $insn{$1.$2} = 1; }
  36. }
  37. close(FD);
  38. print "branches: ", join(" ",keys(%branch)), "n" if $opt{'t'};
  39. print "insns: ", join(" ",keys(%insn)), "n" if $opt{'t'};
  40. foreach my $file (glob("*.asm"), glob("*/*.asm")) {
  41.     print "file $filen" if $opt{'t'};
  42.     open(FD, "<$file") or die "Cannot open $file: $!";
  43.     while (<FD>) {
  44. if (/^[ t]*C/) { next; };
  45. if (/^t([a-z0-9]+)/) {
  46.     my $opcode = $1;
  47.     print "opcode $1n" if $opt{'t'};
  48.     # instructions with an l, w or b suffix should have a definsn
  49.     # (unless they're already a defbranch)
  50.     if ($opcode =~ /[lwb]$/
  51. && ! defined $insn{$opcode}
  52. && ! defined $branch{$opcode})
  53.     {
  54. print "$file: $.: missing m68k_definsn: $opcoden";
  55.     }
  56.     # instructions bXX should have a defbranch (unless they're
  57.     # already a definsn)
  58.     if ($opcode =~ /^b/
  59. && ! defined $insn{$opcode}
  60. && ! defined $branch{$opcode})
  61.     {
  62. print "$file: $.: missing m68k_defbranch: $opcoden";
  63.     }
  64. }
  65.     }
  66.     close(FD);
  67. }