poke-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] std.pk: add convenient functions to print values in differen


From: Jose E. Marchesi
Subject: Re: [PATCH] std.pk: add convenient functions to print values in different bases
Date: Thu, 26 Sep 2024 09:51:57 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Hi Mohammad.

> 2024-09-26  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
>
>       * std.pk (hex): New function to print value in base 16.
>         (dec): New function to print value in base 10.
>         (bin): New function to print value in base 2.
> ---
>
> Hi Jose.
>
> First I wanted to add the following dot-commands:
>   - .hex VALUE
>   - .dec VALUE
>   - .bin VALUE
> To show the VALUE in the specified base.
>
> Imagine the current obase is 16, but you want to know the value of a
> field in base 10:
>
>   .dec whatever_value
>
> without changing the current obase.
>
> Then I realized I can implement this as Poke functions:
>
>   hex :val 342
>
>
> If the names are too general, I'd suggest:
>   - obhex
>   - obdec
>   - obbin
>
>
> These function are only useful for interactive sessions, not
> scripting.

If the functions are only useful for interactive sessions, I think it is
better to make them dot-commands.  But why not doing only one?
Something like:

  (poke) .bases EXPR
  666, 0x29a, 0o1232, 0b1010011010


>
>
> Regards,
> Mohammad-Reza
>
>
>  ChangeLog      |  6 ++++++
>  libpoke/std.pk | 29 +++++++++++++++++++++++++++++
>  2 files changed, 35 insertions(+)
>
> diff --git a/ChangeLog b/ChangeLog
> index e8f99c49..d33fc7b0 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,9 @@
> +2024-09-26  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
> +
> +     * std.pk (hex): New function to print value in base 16.
> +        (dec): New function to print value in base 10.
> +        (bin): New function to print value in base 2.
> +
>  2024-09-25  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
>  
>       * doc/learn-poke-language-in-y-minutes.pk: Update and add a few
> diff --git a/libpoke/std.pk b/libpoke/std.pk
> index c5fc64cd..6d323765 100644
> --- a/libpoke/std.pk
> +++ b/libpoke/std.pk
> @@ -939,3 +939,32 @@ fun popcount = (any v) int<32>:
>      return popcount (asm any: ("ogetm; nip" : v));
>    raise E_inval;
>  }
> +
> +/* Convenient functions to print values with different base (2, 10, 16).  */
> +
> +fun hex = (any val) void:
> +{
> +  var ob = vm_obase;
> +
> +  vm_set_obase (16);
> +  printf ("%v\n", val);
> +  vm_set_obase (ob);
> +}
> +
> +fun dec = (any val) void:
> +{
> +  var ob = vm_obase;
> +
> +  vm_set_obase (10);
> +  printf ("%v\n", val);
> +  vm_set_obase (ob);
> +}
> +
> +fun bin = (any val) void:
> +{
> +  var ob = vm_obase;
> +
> +  vm_set_obase (2);
> +  printf ("%v\n", val);
> +  vm_set_obase (ob);
> +}



reply via email to

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