diff options
Diffstat (limited to 'ARMeilleure/Translation/ArmEmitterContext.cs')
-rw-r--r-- | ARMeilleure/Translation/ArmEmitterContext.cs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ARMeilleure/Translation/ArmEmitterContext.cs b/ARMeilleure/Translation/ArmEmitterContext.cs index 6d02728c..33355dae 100644 --- a/ARMeilleure/Translation/ArmEmitterContext.cs +++ b/ARMeilleure/Translation/ArmEmitterContext.cs @@ -54,6 +54,11 @@ namespace ARMeilleure.Translation public bool HighCq { get; } public Aarch32Mode Mode { get; } + private int _ifThenBlockStateIndex = 0; + private Condition[] _ifThenBlockState = { }; + public bool IsInIfThenBlock => _ifThenBlockStateIndex < _ifThenBlockState.Length; + public Condition CurrentIfThenBlockCond => _ifThenBlockState[_ifThenBlockStateIndex]; + public ArmEmitterContext( IMemoryManager memory, EntryTable<uint> countTable, @@ -196,5 +201,19 @@ namespace ARMeilleure.Translation return default; } + + public void SetIfThenBlockState(Condition[] state) + { + _ifThenBlockState = state; + _ifThenBlockStateIndex = 0; + } + + public void AdvanceIfThenBlockState() + { + if (IsInIfThenBlock) + { + _ifThenBlockStateIndex++; + } + } } }
\ No newline at end of file |