public EndiannessDirective(DirectiveToken directive) { if (directive.DirectiveType == DirectiveType.LittleEndian) { Endianness = Endianness.LittleEndian; } else if (directive.DirectiveType == DirectiveType.BigEndian) { Endianness = Endianness.BigEndian; } else { throw new InvalidOperationException("Wrong directive type: " + directive.DirectiveType); } }
public BitnessDirectiveSymbol( DirectiveToken directive, IntegerToken bitness) { symbols.Add(directive); symbols.Add(bitness); Directive = directive.DirectiveType switch { DirectiveType.OperandSize => BitnessDirectiveType.Data, DirectiveType.AddressSize => BitnessDirectiveType.Address, _ => throw new InvalidOperationException($"Wrong directive type: {directive.DirectiveType}"), }; Bitness = bitness.UnsignedValue switch { 8 => DataWidth.Byte, 16 => DataWidth.Word, 32 => DataWidth.Dword, 64 => DataWidth.Qword, _ => throw new InvalidOperationException($"Invalid bitness: {bitness.UnsignedValue}"), }; }