예제 #1
0
파일: avr.py 프로젝트: zytMatrix/amoco
 def load_binary(self):
     p = self.bin
     if p!=None:
         # create text and data segments according to elf header:
         for s in p.Phdr:
             ms = p.loadsegment(s,PAGESIZE)
             if ms!=None:
                 vaddr,data = ms.popitem()
                 self.state.mmap.write(vaddr,data)
     # create the stack zone:
     self.state.mmap.newzone(cpu.sp)
     self.state[cpu.pc] = cpu.cst(self.bin.entrypoints[0],16)
     for r in cpu.R : self.state[r] = cpu.cst(0,8)
예제 #2
0
 def load_binary(self, bprm):
     p = Task(bprm, cpu)
     p.OS = self
     # map the CODE area:
     p.code.mmap.write(bprm.entrypoints[0], self.dataio.read())
     # define registers:
     for r in cpu.registers:
         p.state[r] = cpu.cst(0, r.size())
     p.state[cpu.pc] = cpu.cst(bprm.entrypoints[0] / 2, cpu.pc.size())
     RAMEND = 0x0900
     p.state[cpu.sp] = cpu.cst(RAMEND, 16)
     # map the DATA area:
     p.state.mmap.write(0x100, b'\0' * (RAMEND - 0x100))
     # map the BIOS functions as external symbols:
     self.load_bios(p.code.mmap)
     self.tasks.append(p)
     return p
예제 #3
0
 def use_avr(self):
     from amoco.arch.avr import cpu
     self.cpu = cpu
     self.state[cpu.pc] = cpu.cst(0,32)
예제 #4
0
 def initenv(self):
     from amoco.cas.mapper import mapper
     m = mapper()
     m[cpu.pc] = cpu.cst(self.bin.entrypoints[0],16)
     for r in cpu.R : m[r] = cpu.cst(0,8)
     return m