Hi
Since MARSS is a full system simulator it simulates both kernel and user
space instructions , the 0Xffffffff81391884 rips are a kernel instructions .
-Furat

On Tue, Jan 11, 2011 at 12:06 AM, sunil shah <[email protected]>wrote:

> Hello Avadh,
>
> Thank you for the help.
>
>
>
>  I want to get the virtual address trace of x86 instruction executed.
>>>
>>
>>
> By default Marss provides a way to generate an execution trace. In
>> 'ptlsim.h' file, un-comment the '#define TRACE_RIP'  and recompile. This
>> will enable capturing trace of executed instructions in file
>> 'ptl_rip_trace'.  Note: If you run for long time this fill will eat up all
>> hard-disk space.
>>
>
> Enabling the TRACE_RIP will produce rip of all the uop. One x86 instruction
> might be broken down into multiple uop. So, just to get only one commit rip
> per x86 instruction I tried to obtain the rip of committed instruction from
> *ReorderBufferEntry::commit() *instead of *ThreadContext:commit().  *I
> verified both will generate the same sequence of rip's expect with TRACE_RIP
> enable, it will have as many entry of a rip as number of uop for the x86
> instruction.
>
>>
>> I tried using in *ReorderBufferEntry::commit()* function field, *
>>> uop.rip.rip* field is giving some address but the obtained address is
>>> not same at the virtual address of instruction which I obtained by using
>>> objdump to disassemble the executable I am running.
>>>
>>> That is interesting. At what point are you switching from emulation to
>> simulation? If you are using 'start_sim' tool then it takes about 1 million
>> instructions to complete and start the next process.
>>
>
> Yes,  I am using start_sim to switch from emulation to simulation.
>
>>
>> Also take a look at this python script (
>> https://github.com/downloads/avadhpatel/marss/trace_to_func.py)  that
>> helps in mapping RIP address to function of your benchmark/application.
>>
>
> RIP address is matched against the virtual address's of function obtained
> by objdump of executable.  But the rip obtained are not always in the range
> of virtual addresses of function obtained by objdump. For instance mostly
> virtual address are in the range of 0X40xxxx  but rip obtained are quite
> high values like 0X00007fe91323c3b7  or 0Xffffffff81391884 or so.  Only *
> 0.15%* of address are in small address range rest are all high address
> value.
>
> So this addresses belongs to which function or program?
> Why there is no matching rip value to the virtual address of executable.? I
> am not sure, is there any offset or some re-mapping of testbench application
> into PTLSim memory map to some specific memory region?
>
> I am trying to generate basic block trace. What I am aiming to obtain is
> all executed instruction virtual address. And offline/ online I will convert
> it to basic block trace.
>
>
> Sorry for such a long email.
>
> Thanks & Regards
> Sunil Shah
>
>
>
>
>
>
>> - Avadh
>>
>>> Any help will be highly appreciated.
>>> Thanks in anticipation
>>>
>>> Regards
>>> Sunil Shah
>>> School of Computing
>>> NUS
>>> Singapore
>>>
>>>
>>> _______________________________________________
>>> http://www.marss86.org
>>> Marss86-Devel mailing list
>>> [email protected]
>>> https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
>>>
>>>
>>
>
> _______________________________________________
> http://www.marss86.org
> Marss86-Devel mailing list
> [email protected]
> https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
>
>
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel

Reply via email to