arch-arm: Instruction size methods in StaticInst class
This patch is introducing some methods in StaticInst so that is possible to get the instruction size in byte of the instruction (can be 2 bytes in Thumb) and the correct opcode (The machInst field contains some appended metadata) Change-Id: I3bed4d9fd7c77feaeded40ded192afe445d306ea Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/6781 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -423,6 +423,25 @@ class ArmStaticInst : public StaticInst
|
||||
{
|
||||
return intWidth;
|
||||
}
|
||||
|
||||
/** Returns the byte size of current instruction */
|
||||
ssize_t
|
||||
instSize() const
|
||||
{
|
||||
return (!machInst.thumb || machInst.bigThumb) ? 4 : 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the real encoding of the instruction:
|
||||
* the machInst field is in fact always 64 bit wide and
|
||||
* contains some instruction metadata, which means it differs
|
||||
* from the real opcode.
|
||||
*/
|
||||
MachInst
|
||||
encoding() const
|
||||
{
|
||||
return static_cast<MachInst>(mask(instSize() * 8));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user