poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] I find it easier to read a dump if the rows are separated li


From: Jose E. Marchesi
Subject: Re: [PATCH] I find it easier to read a dump if the rows are separated like this.
Date: Sat, 30 Nov 2019 19:50:29 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Hi John.

I am ok with the functionality.  But see a couple of comments below.

        * src/pk-dump.pk: New paramter: cluster_by
    ---
     ChangeLog      |  4 ++++
     src/pk-dump.pk | 39 ++++++++++++++++++++++++++++++++++-----
     2 files changed, 38 insertions(+), 5 deletions(-)
    
    diff --git a/ChangeLog b/ChangeLog
    index b50be01..8971868 100644
    --- a/ChangeLog
    +++ b/ChangeLog
    @@ -1,5 +1,9 @@
     2019-11-30 John Darrington <address@hidden>
     
    +   * src/pk-dump.pk: New paramter: cluster_by
    +
    +2019-11-30 John Darrington <address@hidden>
    +
        * testsuite/poke.std/crc32.pk: New file.
     
     2019-11-30 John Darrington <address@hidden>
    diff --git a/src/pk-dump.pk b/src/pk-dump.pk
    index 47b918e..93a97d6 100644
    --- a/src/pk-dump.pk
    +++ b/src/pk-dump.pk
    @@ -26,6 +26,7 @@ pk_help_str = pk_help_str
     
     defvar pk_dump_size = 128#B;
     defvar pk_dump_group_by = 2#B;
    +defvar pk_dump_cluster_by = 4;

I would like the default to be the current behavior.  That would
be... pk_dump_cluster_by = 8?

     defvar pk_dump_ruler = 1;
     defvar pk_dump_ascii = 1;
     
    @@ -40,6 +41,7 @@ defvar pk_dump_offset = 0#B;
     defun dump = (off64 from = pk_dump_offset,
                   off64 size = pk_dump_size,
                   off64 group_by = pk_dump_group_by,
    +              int cluster_by = pk_dump_cluster_by,
                   int ruler = pk_dump_ruler,
                   int ascii = pk_dump_ascii) void:
     {
    @@ -47,6 +49,12 @@ defun dump = (off64 from = pk_dump_offset,
       {
         defvar o = 0#B;
     
    +    defun itoa = (uint<8> x) char:
    +    {
    +      if (x >= 0 && x <= 9) return x + '0';
    +      if (x >= 10 && x <= 15) return x + 'A' - 10;
    +    }
    +
         printf "%<dump-ruler:76543210 %>";
         for (s in ["00", "11", "22", "33", "44", "55", "66",
               "77", "88", "99", "aa", "bb", "cc", "dd",
    @@ -56,13 +64,27 @@ defun dump = (off64 from = pk_dump_offset,
          printf "%<dump-ruler: %>";
        printf "%<dump-ruler:%s%>", s;
        o = o + 1#B;
    +   if ((o % (cluster_by * group_by)) == 0#B)

This can result in division by zero.

    +      printf (" ");
           }
         if (ascii)
    -      printf "%<dump-ruler:  0123456789ABCDEF%>";
    +      {
    +   defvar x = 0 as uint<8>;
    +   defvar s = "";
    +   while (x < 16)
    +     {
    +       s = s + itoa(x) as string;
    +       x = x + 1;
    +       if ((x % ((cluster_by * group_by)/1#B)) == 0)
    +         s = s + " ";
    +     }
    +   printf "%<dump-ruler:  %s%>", s;
    +      }
         print "\n";
       }
     
    -  defun print_ascii = (off64 offset, off64 top, off64 step) void:
    +  defun print_ascii = (off64 offset, off64 top, off64 step,
    +                  off64 group_by, int cluster_by) void:
       {
         print("  ");
         defvar o = 0#B;
    @@ -74,6 +96,8 @@ defun dump = (off64 from = pk_dump_offset,
        else
          printf "%<dump-ascii:%c%>", v;
        o = o + 1#B;
    +   if ((o % (cluster_by * group_by)) == 0#B)
    +      printf (" ");
           }
       }
     
    @@ -84,7 +108,8 @@ defun dump = (off64 from = pk_dump_offset,
         printf ("%u8x", c);
       }
     
    -  defun print_data = (off64 offset, off64 top, off64 step) void:
    +  defun print_data = (off64 offset, off64 top, off64 step,
    +                 off64 group_by , int cluster_by) void:
       {
         while (offset < top)
           {
    @@ -97,6 +122,8 @@ defun dump = (off64 from = pk_dump_offset,
            {
              print_hex (byte @ (offset + o), o);
              o = o + 1#B;
    +         if ((o % (cluster_by * group_by)) == 0#B)
    +           printf (" ");
            }
        }
        catch if E_eof {}
    @@ -109,7 +136,7 @@ defun dump = (off64 from = pk_dump_offset,
                print ("  ");
                o = o + 1#B;
              }
    -       print_ascii (offset, top, step);
    +       print_ascii (offset, top, step, group_by, cluster_by);
          }
        print "\n";
     
    @@ -126,7 +153,9 @@ defun dump = (off64 from = pk_dump_offset,
       if (ruler)
         print_ruler;
     
    -  try print_data :offset offset :top top :step 16#B;
    +  try print_data :offset offset :top top :step 16#B
    +                 :group_by group_by :cluster_by cluster_by;
    +
       catch if E_eof { print "\n"; }
     
       pk_dump_offset = from;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]