/// <summary> /// Gets the virtual address of a memory operand /// </summary> /// <param name="elementIndex">Only used if it's a vsib memory operand. This is the element index of the vector index register.</param> /// <param name="getRegisterValue">Delegate that returns the value of a register or the base address of a segment register</param> /// <returns></returns> public readonly ulong GetVirtualAddress(int elementIndex, VAGetRegisterValue getRegisterValue) { if (getRegisterValue is null) { throw new ArgumentNullException(nameof(getRegisterValue)); } var provider = new VARegisterValueProviderDelegateImpl(getRegisterValue); if (TryGetVirtualAddress(elementIndex, provider, out var result)) { return(result); } return(0); }
public VARegisterValueProviderDelegateImpl(VAGetRegisterValue getRegisterValue) => this.getRegisterValue = getRegisterValue ?? throw new ArgumentNullException(nameof(getRegisterValue));