Mercurial > lcfOS
view util/serve_arm_as.py @ 336:d1ecc493384e
Added spiffy armtoken class for bit fiddeling. Added cool test that checks for build repeatability
author | Windel Bouwman |
---|---|
date | Wed, 19 Feb 2014 22:32:15 +0100 |
parents | 6f2423df0675 |
children | c7cc54c0dfdf |
line wrap: on
line source
""" Tornado webserver interface to arm-elf-as. """ import subprocess import tornado.web import tornado.ioloop import io def mangle(inp, outstream): print('assembling...', file=outstream) p_as = subprocess.Popen(['arm-elf-as', '-mthumb'], stdin=subprocess.PIPE) p_as.communicate(input=inp.encode('ascii')) p_objdump = subprocess.Popen(['arm-elf-objdump', '-d'], stdout=subprocess.PIPE) output = p_objdump.communicate()[0].decode('ascii') print(output, file=outstream) p_objdump = subprocess.Popen(['arm-elf-objdump', '-s'], stdout=subprocess.PIPE) output = p_objdump.communicate()[0].decode('ascii') print(output, file=outstream) print('Done!', file=outstream) page = """ <html> <head> </head> <body> <h1> </h1> <form action="" method="post"> <textarea name="source" rows="25" cols="80"> %src% </textarea> <br> <input type="submit" value="Assemble!"> </form> <div> %result% </div> </body> </html> """ class MainHandler(tornado.web.RequestHandler): def get(self): src="sub sp,sp,#8" self.write(page.replace('%result%', '').replace('%src%', src)) def post(self): #print(self.request.body) src = self.get_argument('source') out = io.StringIO() mangle(src, out) txt = out.getvalue() txt = txt.replace('\n', '<br>') self.write(page.replace('%result%', txt).replace('%src%', src)) application = tornado.web.Application([(r"/", MainHandler)]) if __name__ == '__main__': application.listen(8888) tornado.ioloop.IOLoop.instance().start()