def METHOD_NAME(self, source):
    for name, enc in sysreg.sysreg_fwd.items():
        source = re.sub("\\b" + name + "\\b", f"s{enc[0]}_{enc[1]}_c{enc[2]}_c{enc[3]}_{enc[4]}", source)
    self.sfile = self._tmp + "b.S"
    with open(self.sfile, "w") as fd:
        fd.write(self.HEADER + "\n")
        fd.write(source + "\n")
        fd.write(self.FOOTER + "\n")
    self.ofile = self._tmp + "b.o"
    self.elffile = self._tmp + "b.elf"
    self.bfile = self._tmp + "b.b"
    self.nfile = self._tmp + "b.n"
    self._call(CC, f"{self.CFLAGS} -c -o {self.ofile} {self.sfile}")
    self._call(LD, f"{self.LDFLAGS} --Ttext={self.addr:#x} -o {self.elffile} {self.ofile}")
    self._call(OBJCOPY, f"-j.text -O binary {self.elffile} {self.bfile}")
    self._call(NM, f"{self.elffile} > {self.nfile}")
    with open(self.bfile, "rb") as fd:
        self.data = fd.read()
    with open(self.nfile) as fd:
        for line in fd:
            line = line.replace("\n", "")
            addr, type, name = line.split()
            addr = int(addr, 16)
            setattr(self, name, addr)
    self.start = self._start
    self.len = len(self.data)
    self.end = self.start + self.len