I now came up with this code: TCGv_i64 res = 0; TCGv_i64 addr = (TCGv_i64)(env->regs[R_EDI]);
tcg_gen_qemu_ld_i64(res, addr, 0, MO_LEUQ); env->regs[R_EAX] = (target_ulong)res; However this crashes afterwards in test_bit. Maybe this is caused by an invalid access? Anything wrong about the code? This still gives some warnings, like TCGv_i32 expected (and when you use TCGv_i32, it says TCGv_i64 expected) plus some casting warnings. Am Sa., 1. Okt. 2022 um 22:23 Uhr schrieb Richard Henderson < richard.hender...@linaro.org>: > On 10/1/22 13:10, BitFriends wrote: > > Hello, > > > > I am trying to create a custom instruction that accesses guest memory > specified by an > > address in a register. I specifically want to read from that address. So > I tried to do > > that using "tcg_gen_qemu_ld_i64(&res, env->regs[R_EDI], 0, MO_LEUQ);", > but that doesn't > > save any result in res. > > This statement should have given you compilation errors, so I don't know > what you mean by > "doesn't save any result". There's clearly a disconnect between what you > describe and > what you actually attempted. > > Anyway, by the name you can see that function "gen"erates a "tcg" > operation, which is then > later compiled by the jit, the output of which is later executed to > produce a result. > Which is, in general, what you want for implementing a custom instruction. > > > r~ >
bt
Description: Binary data