def nasm_mutable_data_finalizer(env, code, data):
    """
    Simple data allocation strategy that expects the code to be in a writable
    segment. We just append the data to the end of the code.
    """

    if env.target.bits == 32:
        get_pc = [
            '\tcall __getpc0',
            '__getpc0:',
            '\tpop %s' % env.OFFSET_REG,
            '\tadd %s, __data - __getpc0' % env.OFFSET_REG,
            '__realstart:',
        ]
    else:
        get_pc = ['\tlea %s, [rel __data]' % env.OFFSET_REG]

    if data or env.buffers:
        return get_pc + code + _pack_data(data)
    else:
        return code
def nasm_mutable_data_finalizer ( env , code , data ) : if env . target . bits == 32 : get_pc = [ '\tcall __getpc0' , '__getpc0:' , '\tpop %s' % env . OFFSET_REG , '\tadd %s, __data - __getpc0' % env . OFFSET_REG , '__realstart:' , ] else : get_pc = [ '\tlea %s, [rel __data]' % env . OFFSET_REG ] if data or env . buffers : return get_pc + code + _pack_data ( data ) else : return code
Simple data allocation strategy that expects the code to be in a writable
    segment. We just append the data to the end of the code.