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