[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