Example #1
0
 internal RelocatableModule()
 {
     m_words      = new WordCollection();
     m_labelTable = new LabelTable();
     m_entryPoint = null;
     m_labelRefs  = new List <LabelReference>();
 }
Example #2
0
        private static WordCollection MakeLinkedWords(
            ItemSelectableCollection <RelocatableModule> relModules)
        {
            WordCollection linkedWords = new WordCollection();

            relModules.ForEach((relModule) => linkedWords.Add(relModule.Words));
            return(linkedWords);
        }
Example #3
0
        private static ExecutableModule MakeExecutableModule(
            this ItemSelectableCollection <RelocatableModule> relModules)
        {
            MemoryAddress  execStartAddress = GetExecStartAddress(relModules);
            WordCollection linkedWords      = MakeLinkedWords(relModules);

            return(new ExecutableModule(LoadAddress, execStartAddress, linkedWords));
        }
Example #4
0
        /// <summary>
        /// 指定の語のコレクション中の参照するラベルのアドレスが入る語の値を
        /// 解決したアドレスの値に置き換えます。
        /// </summary>
        /// <param name="labelAddrResolver">
        /// 参照するラベルのアドレスを解決する <see cref="LabelAddressResolver"/> のオブジェクトです。
        /// </param>
        /// <param name="words">参照するラベルのアドレスが入る語を含む語のコレクションです。</param>
        internal void ResolveReferringAddress(LabelAddressResolver labelAddrResolver, WordCollection words)
        {
            MemoryAddress resolvedAddress = labelAddrResolver.ResolveAddressFor(m_referringLabel);

            words[m_wordOffset] = resolvedAddress.GetValueAsWord();
        }