qemu-devel
[Top][All Lists]
Advanced

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

Re: access guest address from within instruction


From: BitFriends
Subject: Re: access guest address from within instruction
Date: Sun, 2 Oct 2022 11:20:20 +0200

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.henderson@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~

Attachment: bt
Description: Binary data


reply via email to

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