Ejemplo n.º 1
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();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// ラベルを参照する語のラベルのアドレスを解決し、語の値をそのアドレスに置き換えます。
        /// </summary>
        /// <param name="entryPointTable">
        /// それぞれのプログラムで定義された実行開始点の一覧です。
        /// </param>
        internal void ResolveLabelReferences(EntryPointTable entryPointTable)
        {
            LabelAddressResolver labelAddrResolver = new LabelAddressResolver(m_labelTable, entryPointTable);

            m_labelRefs.ForEach((labelRef) => labelRef.ResolveReferringAddress(labelAddrResolver, m_words));
        }