Hello all,

After figuring out how to more or less bend the isa generation system to my
will, I've come across a bit of confusion.

I've written a new instruction format modeled after LoadOrNop. I have a
code block that I pass from the decoder.isa into my instruction format
which is then put into the execute() function via a substitution.

I've noticed that if this code block looks like {{Ra.uq = Rb.uq + Rc.uq}},
then the IsMemRef flag isn't set and the execute() function is called. If,
however, I put add something like {{ Mem = Rb.uq + Rc.uq}}, then I get the
IsMemRef flag set and the initiateAcc() function is called, but the
execute() function is not. Should I just not bother writing an execute()
function for memory accesses?

The other confusing thing is I can't figure out if the code block {{ Mem =
Rb.uq + Rc.uq }} actually has any effect if I never substitute it (i.e. I
never actually write %(code)s in any of my templates). It appears that it
still sets the IsMemRef and the IsStore flags in the decoder constructor,
but other than that it doesn't have any other effect. Is this the correct
interpretation?

Thanks,
Paul
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to