public void ResolveAddressFor() { Label definedLabel = new Label("DEF"); MemoryAddress definedLabelAddress = new MemoryAddress(0x1234); LabelDefinition labelDef = LabelDefinition.MakeForUnitTest(definedLabel, MemoryOffset.Zero, definedLabelAddress); m_labelTable.RegisterForUnitTest(labelDef); CheckResolveAddressFor( definedLabel, true, definedLabelAddress, "プログラム内で定義されたラベル => 成功、そのラベルのアドレスが返される"); EntryPoint entryPoint = EntryPointTest.Make("EXESTRT", "ENTRY", 0xfedc); m_entryPointTable.Register(entryPoint); CheckResolveAddressFor( entryPoint.EntryLabel, true, entryPoint.ExecStartAddress, "プログラムの入口名 => 成功、そのプログラムの実行開始アドレスが返される"); Label undefinedLabel = new Label("UNDEF"); MemoryAddress DontCare = MemoryAddress.Zero; CheckResolveAddressFor( undefinedLabel, false, DontCare, "未定義のラベル => 例外"); }
internal static LabelDefinition Make(String name, UInt16 relOffsetValue, UInt16 absAddressValue) { Label label = new Label(name); MemoryOffset relOffset = new MemoryOffset(relOffsetValue); MemoryAddress absAddress = new MemoryAddress(absAddressValue); return(LabelDefinition.MakeForUnitTest(label, relOffset, absAddress)); }
private void PrepareRegisteredLabel() { m_registeredLabel = new Label("REGED"); m_unregisteredLabel = new Label("UNREGED"); m_registeredLabelDef = LabelDefinition.MakeForUnitTest( m_registeredLabel, MemoryOffset.Zero, MemoryAddress.Zero); m_lblTable.RegisterForUnitTest(m_registeredLabelDef); }
public void ResolveExecStartAddress() { EntryPoint registeredEntryPoint = Make("EXESTRT", "REGED"); EntryPoint unregisteredEntryPoint = Make("NOTDEF", "UNREGED"); MemoryAddress registeredExecStartAddress = new MemoryAddress(0x1234); MemoryAddress DontCareAddress = MemoryAddress.Zero; MemoryOffset DontCareOffset = MemoryOffset.Zero; LabelDefinition labelDef = LabelDefinition.MakeForUnitTest( registeredEntryPoint.ExecStartLabel, DontCareOffset, registeredExecStartAddress); m_lblTable.RegisterForUnitTest(labelDef); CheckResolveExecStartAddress( registeredEntryPoint, true, registeredExecStartAddress, "実行開始ラベルが LabelTable に登録されている => 実行開始アドレスが解決され設定される"); CheckResolveExecStartAddress( unregisteredEntryPoint, false, DontCareAddress, "実行開始ラベルが LabelTable に登録されていない => 例外"); }