Пример #1
0
        public static ETMBranchDecoder New(ETMStateData aStateData)
        {
            ETMBranchDecoder ret = null;

            //
            switch (aStateData.Config.BranchCompressionScheme)
            {
            default:
            case TETMBranchCompressionScheme.EOriginal:
                ret = new ETMBranchDecoderOriginal(aStateData);
                break;

            case TETMBranchCompressionScheme.EAlternative:
                ret = new ETMBranchDecoderAlternative(aStateData);
                break;
            }
            //
            return(ret);
        }
Пример #2
0
        public void Decode()
        {
            int lastBufferCountValue = 0;
            //
            ETMStateData stateManager = new ETMStateData(this);

            while (!iBuffer.IsEmpty)
            {
                byte b = iBuffer.Dequeue();
                if (iBuffer.Count != lastBufferCountValue)
                {
                    Trace("[0x{0:x4}] byte: 0x{1:x2} {2}",
                          stateManager.PacketNumber,
                          b,
                          Convert.ToString(b, 2).PadLeft(8, '0')
                          );
                }
                //
                lastBufferCountValue = iBuffer.Count;
                stateManager.PrepareToHandleByte(b);
            }
        }
Пример #3
0
 public ETMBranchDecoderOriginal(ETMStateData aManager)
     : base(aManager)
 {
 }
Пример #4
0
 protected ETMBranchDecoder(ETMStateData aStateData)
 {
     iStateData      = aStateData;
     iInstructionSet = aStateData.CurrentInstructionSet;
 }
Пример #5
0
 public ETMBranchDecoderAlternative(ETMStateData aManager)
     : base(aManager)
 {
 }