On Thu, Aug 16, 2012 at 1:43 PM, Max Filippov <jcmvb...@gmail.com> wrote: > On Thu, Aug 16, 2012 at 9:37 PM, Max Filippov <jcmvb...@gmail.com> wrote: >> On Thu, Aug 16, 2012 at 9:29 PM, Steven <wangwangk...@gmail.com> wrote: >>> On Thu, Aug 16, 2012 at 1:00 PM, Max Filippov <jcmvb...@gmail.com> wrote: >>>> On Thu, Aug 16, 2012 at 8:36 PM, Steven <wangwangk...@gmail.com> wrote: >>>>> On Thu, Aug 16, 2012 at 4:02 AM, 陳韋任 (Wei-Ren Chen) >>>>> <che...@iis.sinica.edu.tw> wrote: >>>>>>> I would like to is there any function that could log the register >>>>>>> content of the guest machine, like "info registers" in the qemu >>>>>>> monitor mode. >>>>>> >>>>>> Why not check how "info registes" be implemented in QEMU? ;) >>>>>> I guess you just have to log env->regs or something like that. >>>>> Thanks for pointing this out. >>>>> I would like to get a trace of guest memory access. So I can not use >>>>> "info registers". >>>>> What I want to do is that when tcg fetches a load instruction at >>>>> disas_insns(), the guest memory address should be calculated. For >>>> >>>> No, you don't want this, because the same translated code may be >>>> invoked multiple times with different values in registers. >>>> >>>>> example, the tb has an instruction of mov 0x4(%ebx) %eax. >>>>> To calculate the address of 0x4(%ebx), I need to know the value of %ebx. >>>>> Is this correct? Thanks. >>>> >>>> Why don't you just instrument actual memory access functions in >>>> softmmu_template.h ? >>> But this code only touches the s->pc. For registers in the load >>> instruction, it won't generate the memory access code. So I need to >>> add code to some function to get the guest memory address access. >> >> Take a close look at >> >> DATA_TYPE >> glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM >> target_ulong addr, >> int mmu_idx) >> >> and >> >> void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM >> target_ulong >> addr, >> DATA_TYPE val, >> int mmu_idx) >> >> At runtime they get addr, this is the virtual address of the memory access. >> This file is included several times to instantiate these functions for >> different memory access types. >> A set of macros manipulates access size and whether it is code or data >> access. > > But maybe I got you wrong and by > > What I want to do is that when tcg fetches a load instruction at > disas_insns(), the guest memory address should be calculated. > > you meant that you need to record code address that made an access, > not the accessed data address? > I want to get the guest memory address in the instruction mov 0x4(%ebx) %eax, whic is 0x4(%ebx). Since %ebx is not resolved until the execution time, the code in softmmu_header.h does not generate any hit or miss information. Do you know any place that I could resolve the memory access address? Thanks.
> -- > Thanks. > -- Max