diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianStructuresLib/Arm/Instructions/IArmInstruction.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianStructuresLib/Arm/Instructions/IArmInstruction.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,140 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +using System; +using System.Collections.Generic; +using System.Text; +using SymbianUtils.BasicTypes; +using SymbianStructuresLib.Arm; +using SymbianStructuresLib; +using SymbianStructuresLib.Arm.Registers; + +namespace SymbianStructuresLib.Arm.Instructions +{ + public interface IArmInstruction + { + #region Properties + + /// + /// The instruction set encoding for the + /// instruction + /// + TArmInstructionSet AIType + { + get; + } + + /// + /// The instruction group/categorisation + /// + TArmInstructionGroup AIGroup + { + get; + } + + /// + /// The arm entity which the instruction operates upon + /// + TArmInstructionTarget AITarget + { + get; + } + + /// + /// The condition codes associated with the instruction + /// + TArmInstructionCondition AIConditionCode + { + get; + } + + /// + /// The raw instruction as a 32bit value + /// + SymUInt32 AIRawValue + { + get; + } + + /// + /// The raw instruction in binary notation, encoded as a string. + /// No leading prefix. + /// + string AIBinaryString + { + get; + } + + /// + /// The raw instruction in hexadecimal notation, encoded as a string. + /// No leading prefix. + /// + string AIHexString + { + get; + } + + /// + /// An optional disassembled interpretation of the instruction. + /// + string AIDisassembly + { + get; + } + + /// + /// The address from which the instruction was read. + /// + uint AIAddress + { + get; + } + + /// + /// The size, in bytes, of the instruction. E.g. ARM=4, THUMB=2 etc. + /// + uint AISize + { + get; + } + + /// + /// If the instruction was not recognised, then this returns true + /// + bool AIIsUnknown + { + get; + } + + /// + /// Get a bit by index + /// + SymBit this[ int aIndex ] + { + get; + } + + #endregion + + #region API + bool QueryInvolvement( TArmRegisterType aRegister ); + + bool QueryInvolvementAsSource( TArmRegisterType aRegister ); + + bool QueryInvolvementAsDestination( TArmRegisterType aRegister ); + #endregion + } +}