コード例 #1
0
        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,
                "未定義のラベル => 例外");
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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 に登録されていない => 例外");
        }