qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>, qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Cleber Rosa <crosa@redhat.com>
Subject: Re: [PATCH v2] decodetree: Allow use of hex/bin format for argument field values
Date: Tue, 1 Dec 2020 06:31:19 -0600	[thread overview]
Message-ID: <c4cc7502-71c5-3bbd-67d0-53e5fb2272e2@linaro.org> (raw)
In-Reply-To: <20201201103404.2795455-1-f4bug@amsat.org>

On 12/1/20 4:34 AM, Philippe Mathieu-Daudé wrote:
> ISA datasheets often use binary or hexadecimal constant values.
> By doing base conversion, we might introduce bugs. Safer is to
> copy/paste the datasheet value.
> 
> To add support for bin/hex constants in argument field token,
> extend the re_num_ident regexp and use '0' as radix base when
> parsing the integer (to interpret it as a code literal).
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> v2: Fix regexp (Richard)
> ---
>  scripts/decodetree.py | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/decodetree.py b/scripts/decodetree.py
> index 47aa9caf6d1..c8136073535 100644
> --- a/scripts/decodetree.py
> +++ b/scripts/decodetree.py
> @@ -50,6 +50,7 @@
>  re_fld_ident = '%[a-zA-Z0-9_]*'
>  re_fmt_ident = '@[a-zA-Z0-9_]*'
>  re_pat_ident = '[a-zA-Z0-9_]*'
> +re_num_ident = '[+-]?([0-9]+|0x[0-9a-fA-F]+|0b[01]+)'

re_num or re_number, perhaps -- it's not an identifier.

>          # 'Foo=number' sets an argument field to a constant value
> -        if re.fullmatch(re_C_ident + '=[+-]?[0-9]+', t):
> +        if re.fullmatch(re_C_ident + '=' + re_num_ident, t):
>              (fname, value) = t.split('=')
> -            value = int(value)
> +            value = int(value, 0)
>              flds = add_field(lineno, flds, fname, ConstField(value))
>              continue

It occurs to me that we don't actually have to interpret this string --
decodetree doesn't do anything with it but pass it along to the generated C
code.  We could in fact accept a re_C_ident as well, to allow symbolic values.
 So long as the symbols are defined before the decode.c.inc file is included.

So perhaps just change ConstField to not expect an integral value, and just
store the string.


r~


      reply	other threads:[~2020-12-01 12:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-01 10:34 [PATCH v2] decodetree: Allow use of hex/bin format for argument field values Philippe Mathieu-Daudé
2020-12-01 12:31 ` Richard Henderson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c4cc7502-71c5-3bbd-67d0-53e5fb2272e2@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).