Many thanks for your response Laurent.


- So, how ca I obtain the value that TCGv_i32 represents?

- I don't understand well how a helper functions. For instance, cosidering this call to a helper again:

        gen_helper_flds_ST0(cpu_tmp2_i32, tcg_const_i32(MY_INT_VALUE))

Can I obtain the parameters "cpu_tmp2_i32" and "tcg_const_i32(MY_INT_VALUE)" from the args[0] and args[1] described in DEF_HELPER_FLAGS_2???


Jose.



El 31/07/12 15:19, Laurent Desnogues escribió:
On Mon, Jul 30, 2012 at 6:40 PM, Jose Cano Reyes <jc...@ac.upc.edu> wrote:
I am trying to add a new integer parameter to an existing helper and call
this helper in "targeti386/translate.c". I have several problems:

1) I cannot add an integer parameter to the helper, the compiler says that
it must be "TCGv_i32", despite I declare this new parameter as "int" in
"target-i386/helper.h". Why?
Helpers only accept TCGv parameters.

2) If I use the the function "tcg_const_i32" in order to convert my integer
to TCGv_i32 I always obtain the same output value, that is:

         tcg_const_i32(10) = 1074260520
         tcg_const_i32(22) = 1074260520
         tcg_const_i32(30) = 1074260520
         ...
TCGv is an index, not the value it represents.  Think of it
as an id.

tcg_const will allocate a TCGv and then emit a TCG mov
instruction to assign it a value.

3) Moreover, wen I pass this value in the helper call "gen_helper_flds_ST0",
that is:

      gen_helper_flds_ST0(cpu_tmp2_i32, tcg_const_i32(MY_INT_VALUE));

     How can I use MY_INT_VALUE later in the function "tcg_gen_helperN" .
This function is called by DEF_HELPER_FLAGS2, which corresponds to
DEF_HELPER_2 (definition of my helper).
Look at helper_aam, that should help :-)


Laurent


Reply via email to