Exemplo n.º 1
0
        private void AllocateArg(string ident, int funcIndex, FusionCore.PrimitiveType datatype, int datasize = (int)FusionCore.DSASM.Constants.kPrimitiveSize)
        {
            FusionCore.DSASM.SymbolNode node = new FusionCore.DSASM.SymbolNode();
            node.name          = ident;
            node.size          = datasize;
            node.functionIndex = funcIndex;
            node.datatype      = datatype;
            node.isArgument    = true;

            int locOffset = functions.functionList[funcIndex].localCount;

            // This is standard
            argOffset++;
            node.index = -2 - (locOffset + argOffset);

            // This is through FEP
            //node.index = argOffset++;

            symbols.Update(node);
        }
Exemplo n.º 2
0
        private void Allocate(string ident, int funcIndex, FusionCore.PrimitiveType datatype, int datasize = (int)FusionCore.DSASM.Constants.kPrimitiveSize)
        {
            FusionCore.DSASM.SymbolNode node = new FusionCore.DSASM.SymbolNode();
            node.name = ident;
            node.size = datasize;
            node.functionIndex = funcIndex;
            node.datatype = datatype;
            node.isArgument = false;

            // TODO Jun: Shouldnt the offset increment be done upon successfully appending the symbol?
            if ((int)FusionCore.DSASM.Constants.kGlobalScope == funcIndex)
            {
                node.index = globOffset;
                globOffset += node.size;
            }
            else
            {
                node.index = -2 - baseOffset;
                baseOffset += node.size;
            }
            symbols.Update(node);
        }
Exemplo n.º 3
0
        private void Allocate(string ident, int funcIndex, FusionCore.PrimitiveType datatype, int datasize = (int)FusionCore.DSASM.Constants.kPrimitiveSize)
        {
            FusionCore.DSASM.SymbolNode node = new FusionCore.DSASM.SymbolNode();
            node.name          = ident;
            node.size          = datasize;
            node.functionIndex = funcIndex;
            node.datatype      = datatype;
            node.isArgument    = false;

            // TODO Jun: Shouldnt the offset increment be done upon successfully appending the symbol?
            if ((int)FusionCore.DSASM.Constants.kGlobalScope == funcIndex)
            {
                node.index  = globOffset;
                globOffset += node.size;
            }
            else
            {
                node.index  = -2 - baseOffset;
                baseOffset += node.size;
            }
            symbols.Update(node);
        }
Exemplo n.º 4
0
        private void AllocateArg(string ident, int funcIndex, FusionCore.PrimitiveType datatype, int datasize = (int)FusionCore.DSASM.Constants.kPrimitiveSize)
        {
            FusionCore.DSASM.SymbolNode node = new FusionCore.DSASM.SymbolNode();
            node.name = ident;
            node.size = datasize;
            node.functionIndex = funcIndex;
            node.datatype = datatype;
            node.isArgument = true;

            int locOffset = functions.functionList[funcIndex].localCount;

            // This is standard
            argOffset++;
            node.index = -2 - (locOffset + argOffset);

            // This is through FEP
            //node.index = argOffset++;

            symbols.Update(node);
        }