def gen_function_defines()

in scripts/symcryptasm_processor.py [0:0]


def gen_function_defines(architecture, mapping, arg_count, reg_count, start=True):
    defines = ""
    if architecture == "amd64":
        prefix64 = "Q"
        prefix32 = "D"
        prefix16 = "W"
        prefix8  = "B"
    elif architecture == "arm64":
        prefix64 = "X_"
        prefix32 = "W_"
    else:
        logging.error("Unhandled architecture (%s) in gen_function_defines" % architecture)
        exit(1)

    for (index, reg) in mapping.items():
        if (index != 'H') and (index >= max(arg_count+1, reg_count)):
            continue
        if start:
            if (reg.name64 is not None):
                defines += "#define %s%s %s\n" % (prefix64, index, reg.name64)
            if (reg.name32 is not None):
                defines += "#define %s%s %s\n" % (prefix32, index, reg.name32)
            if (reg.name16 is not None):
                defines += "#define %s%s %s\n" % (prefix16, index, reg.name16)
            if (reg.name8 is not None):
                defines += "#define %s%s %s\n" % (prefix8,  index, reg.name8)
        else:
            if (reg.name64 is not None):
                defines += "#undef %s%s\n" % (prefix64, index)
            if (reg.name32 is not None):
                defines += "#undef %s%s\n" % (prefix32, index)
            if (reg.name16 is not None):
                defines += "#undef %s%s\n" % (prefix16, index)
            if (reg.name8 is not None):
                defines += "#undef %s%s\n" % (prefix8,  index)
    return defines