Beispiel #1
0
        //------------------------------------------------------------
        // OpFormat.STI形式のコンストラクタ。
        public BCOpCode(OpType aOp, BCSymbolLink aSymbolLink)
        {
            // 設定
            mFormat     = OpFormat.STI;
            mOp         = aOp;
            mSymbolLink = aSymbolLink;

            // チェック
            checkOpAndFormat();
        }
Beispiel #2
0
        //------------------------------------------------------------
        // 適切なSymbolLinkを取得する。
        public BCSymbolLink CheckAndGet(ISymbolNode aSymbol)
        {
            // 既に存在していればそれを取得する
            foreach (var entry in mList)
            {
                if (System.Object.ReferenceEquals(entry.TargetNode, aSymbol))
                {// あった
                    return(entry);
                }
            }

            // なければ追加してそれを返す
            // todo: 0xFFFFを越えたときの処理
            var newLink = new BCSymbolLink(aSymbol, (ushort)mList.Count);

            mList.Add(newLink);
            return(newLink);
        }