def bit2fasm(db_root, db, grid, bit_file, fasm_file, bitread, part):
    """ Convert bitstream to FASM file. """
    part_yaml = os.path.join(db_root, '{}.yaml'.format(part))
    with tempfile.NamedTemporaryFile() as f:
        bits_file = f.name
        subprocess.check_output(
            '{} --part_file {} -o {} -z -y {}'.format(
                bitread, part_yaml, bits_file, bit_file
            ),
            shell=True
        )

        disassembler = fasm_disassembler.FasmDisassembler(db)

        with open(bits_file) as f:
            bitdata = bitstream.load_bitdata(f)

    model = fasm.output.merge_and_sort(
        disassembler.find_features_in_bitstream(bitdata, verbose=True),
        zero_function=disassembler.is_zero_feature,
        sort_key=grid.tile_key,
    )

    with open(fasm_file, 'w') as f:
        print(
            fasm.fasm_tuple_to_string(model, canonical=False), end='', file=f
        )
Esempio n. 2
0
def bits_to_fasm(db_root, bits_file, verbose, canonical):
    disassembler = fasm_disassembler.FasmDisassembler(db.Database(db_root))

    with open(bits_file) as f:
        bitdata = bitstream.load_bitdata(f)

    print(
        fasm.fasm_tuple_to_string(disassembler.find_features_in_bitstream(
            bitdata, verbose=verbose),
                                  canonical=canonical))
Esempio n. 3
0
def bits_to_fasm(db_root, bits_file, verbose, canonical):
    db = Database(db_root)
    grid = db.grid()
    disassembler = fasm_disassembler.FasmDisassembler(db)

    with open(bits_file) as f:
        bitdata = bitstream.load_bitdata(f)

    model = fasm.output.merge_and_sort(
        disassembler.find_features_in_bitstream(bitdata, verbose=verbose),
        zero_function=disassembler.is_zero_feature,
        sort_key=grid.tile_key,
    )

    print(fasm.fasm_tuple_to_string(model, canonical=canonical), end='')