Ejemplo n.º 1
0
 public Pdp11Assembler(Pdp11Architecture arch, Address addrBase, IEmitter emitter)
 {
     this.arch = arch;
     this.BaseAddress = addrBase ?? Address.Ptr16(0x100);
     this.emitter = emitter;
     this.Equates = new Dictionary<string, object>();
     this.symtab = new SymbolTable();
 }
Ejemplo n.º 2
0
 public OperandParser(Lexer lexer, SymbolTable symtab, Address addrBase, PrimitiveType defaultWordWidth, PrimitiveType defaultAddressWidth)
 {
     this.lexer = lexer;
     this.symtab = symtab;
     this.addrBase = addrBase;
     this.defaultWordWidth = defaultWordWidth;
     this.defaultAddressWidth = defaultAddressWidth;
     this.segOverride = RegisterStorage.None;
 }
Ejemplo n.º 3
0
 public void SymCreateSymbol()
 {
     SymbolTable symtab = new SymbolTable();
     Symbol sym = symtab.CreateSymbol("foo");
     StringWriter writer = new StringWriter();
     symtab.Write(writer);
     Assert.AreEqual(
     @"foo: unresolved 00000000 patches: 0 (foo)
     ", writer.ToString());
 }
Ejemplo n.º 4
0
 public void SymUndefinedSymbols()
 {
     SymbolTable symtab = new SymbolTable();
     Symbol foo = symtab.CreateSymbol("foo");
     Symbol bar = symtab.CreateSymbol("bar");
     Symbol fred = symtab.DefineSymbol("fred", 0x10);
     Symbol [] undef = symtab.GetUndefinedSymbols();
     Assert.AreEqual(2, undef.Length);
     Assert.AreSame(bar, undef[0]);
     Assert.AreSame(foo, undef[1]);
 }
Ejemplo n.º 5
0
 public void SymResolveReference()
 {
     SymbolTable symtab = new SymbolTable();
     Symbol sym = symtab.CreateSymbol("foo");
     Symbol sym2 = symtab.DefineSymbol("foo", 3);
     StringWriter writer = new StringWriter();
     symtab.Write(writer);
     Assert.AreEqual(
     @"foo: resolved 00000003 patches: 0 (foo)
     ",
         writer.ToString());
 }
Ejemplo n.º 6
0
        private Dictionary<Symbol, AssembledSegment> symbolSegments;        // The segment to which a symbol belongs.

        public X86Assembler(IServiceProvider services, IPlatform platform, Address addrBase, List<EntryPoint> entryPoints)
        {
            this.services = services;
            this.arch = platform.Architecture;
            this.addrBase = addrBase;
            this.entryPoints = entryPoints;
            this.defaultWordSize = arch.WordWidth;
            this.textEncoding = Encoding.GetEncoding("ISO_8859-1");
            symtab = new SymbolTable();
            importReferences = new Dictionary<Address, ImportReference>();
            segments = new List<AssembledSegment>();
            mpNameToSegment = new Dictionary<string, AssembledSegment>();
            symbolSegments = new Dictionary<Symbol, AssembledSegment>();
            this.SegmentOverride = RegisterStorage.None;

            unknownSegment = new AssembledSegment(new Emitter(), symtab.DefineSymbol("", 0));
            segments.Add(unknownSegment);

            SwitchSegment(unknownSegment);

            SetDefaultWordWidth(defaultWordSize);
        }
Ejemplo n.º 7
0
		public void Setup()
		{
			symtab = new SymbolTable();
		}