Пример #1
0
        public IEnumerator <RtlInstructionCluster> GetEnumerator()
        {
            while (dasm.MoveNext())
            {
                this.instr  = dasm.Current;
                this.iclass = InstrClass.Linear;
                var instrs = new List <RtlInstruction>();
                m = new RtlEmitter(instrs);
                switch (instr.Mnemonic)
                {
                case Mnemonic.i32_const: Const(PrimitiveType.Word32); break;

                case Mnemonic.f32_const: Const(PrimitiveType.Real32); break;

                default: m.Invalid(); break;
                }
                yield return(new RtlInstructionCluster(instr.Address, instr.Length, instrs.ToArray())
                {
                    Class = this.iclass
                });
            }
        }
Пример #2
0
 public WasmRewriter(WasmArchitecture arch, EndianImageReader rdr, IStorageBinder binder)
 {
     this.arch   = arch;
     this.dasm   = new WasmDisassembler(arch, rdr).GetEnumerator();
     this.binder = binder;
     this.instr  = default !;