コード例 #1
0
        private void SpillToAddress(CodeBlock Value, out TaggedValueBlock Address, out CodeBlock Store)
        {
            var alloca     = new AllocaBlock(this, Value.Type);
            var storageTag = Prologue.AddInstruction(alloca);

            Address = new TaggedValueBlock(this, storageTag, alloca.Type);
            Store   = new StoreBlock(this, Address, Value);
        }
コード例 #2
0
        public IUnmanagedEmitVariable DeclareUnmanagedLocal(UniqueTag Tag, IVariableMember VariableMember)
        {
            var alloca      = new AllocaBlock(this, VariableMember.VariableType);
            var valueTag    = Prologue.AddInstruction(alloca);
            var taggedValue = new TaggedValueBlock(this, valueTag, alloca.Type);

            locals.Add(Tag, taggedValue);
            return(new AtAddressEmitVariable(taggedValue));
        }