[LLVMdev] LLVM bytecode simulator/emulator?
Kenneth Hoste
kenneth.hoste at elis.ugent.be
Thu Jul 13 22:26:37 PDT 2006
Chris Lattner wrote:
> On Thu, 13 Jul 2006, Kenneth Hoste wrote:
>> After browsing through the docs, at a first glance I think I should
>> write a plugin for the 'analyze' tool. I think
>> http://llvm.org/docs/WritingAnLLVMPass.html is where I should start from.
>> The only problem I see now is that there doesn't seem to be a way to
>> get information on a single instruction while being able to keep state
>> over all instructions... Is that possible, and if it is, can oyu tell
>> me how (or where I can find an example of it?).
>
> I don't really understand what you mean by this, but a ModulePass is
> fully general, it can do anything. Can you explain what you're trying
> to do?
The way we're characterizing programs now, is adding our own code after
every instruction. When that instruction gets executed (which can happen
several times, for example inside a loop), we update our state. A simple
example is counting the number of dynamic instructions executed, or the
instruction mix (% loads, % stores, ...) in the dynamic execution.
If I was able to do that using LLVM, we would have characteristics on a
higher level of abstraction. The documentation on the BasicBlock pass
mentions not to keep state over different basic blocks, but I do want
that. Also, I need a way to iterate over the _dynamic_ instruction
stream. Is there a way to do that?
Example static vs dynamic:
static:
L: add x, y
sub y, z
jmpif z>100
mul x, z
dynamic:
add x, y
sub y, z
jmpif z>100
add x, y
sub y, z
jmpif z>100
...
jmpif z>100
mul x, z
If my problem still isn't clear, it's because I didn't explain it well.
Feel free to ask further questions. I'll look into the
documentation/examples today, to see if I can find some kind of dynamic
analysis.
greetings,
Kennneth
--
Statistics are like a bikini. What they reveal is suggestive, but what
they conceal is vital (Aaron Levenstein)
Kenneth Hoste
ELIS - Ghent University
kenneth.hoste at elis.ugent.be
http://www.elis.ugent.be/~kehoste
More information about the llvm-dev
mailing list