Add copyright to files I primarily authored in simulator/
[soc.git] / src / soc / simulator / gas.py
1 import tempfile
2 import subprocess
3 import struct
4 # Copyright (C) 2020 Michael Nolan <mtnolan2640@gmail.com>
5
6
7 def get_assembled_instruction(instruction, bigendian=False):
8 if bigendian:
9 endian_fmt = "elf64-big"
10 obj_fmt = "-be"
11 else:
12 endian_fmt = "elf64-little"
13 obj_fmt = "-le"
14 with tempfile.NamedTemporaryFile(suffix=".o") as outfile:
15 args = ["powerpc64-linux-gnu-as",
16 obj_fmt,
17 "-o",
18 outfile.name]
19 p = subprocess.Popen(args, stdin=subprocess.PIPE)
20 p.communicate(instruction.encode('utf-8'))
21 assert(p.wait() == 0)
22
23 with tempfile.NamedTemporaryFile(suffix=".bin") as binfile:
24 args = ["powerpc64-linux-gnu-objcopy",
25 "-I", endian_fmt,
26 "-O", "binary",
27 outfile.name,
28 binfile.name]
29 subprocess.check_output(args)
30 binary = struct.unpack('>i', binfile.read(4))[0]
31 return binary