pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:119:    }    l->n_label_uses = 0;    l->addr = PIKE_PC;   }      static void ib( char x )   {    add_to_program( x );   }    - #if 0 +    static void iw( short x )   {    add_to_program( x>>8 );    add_to_program( x );   } - #endif +       static void id( int x )   {    add_to_program( (x)&0xff );    add_to_program( (x>>8)&0xff );    add_to_program( (x>>16)&0xff );    add_to_program( (x>>24)&0xff );   }      /* x86 opcodes */
pike.git/src/code/amd64.c:623:    low_mov_reg_mem( from_reg, to_reg, offset );   }      #if 0   static void mov_reg_mem16( enum amd64_reg from_reg, enum amd64_reg to_reg, ptrdiff_t offset )   {    opcode( 0x66 );    rex(0, from_reg, 0, to_reg );    low_mov_reg_mem( from_reg, to_reg, offset );   } +  + static void mov_imm_mem16( short imm, enum amd64_reg to_reg, ptrdiff_t offset ) + { +  opcode( 0x66 ); /* switch 32/16 */ +  +  /* basically copy of mov_imm_mem32 */ +  rex( 0, 0, 0, to_reg ); +  opcode( 0xc7 ); /* now: mov imm16 -> r/m16 (sign extend)*/ +  +  /* This does not work for rg&7 == 4 or 5. */ +  offset_modrm_sib( offset, 0, to_reg ); +  iw( imm ); + }   #endif            static void mov_imm_mem( long imm, enum amd64_reg to_reg, ptrdiff_t offset )   {    if( imm >= -0x80000000LL && imm <= 0x7fffffffLL )    {    rex( 1, 0, 0, to_reg );    opcode( 0xc7 ); /* mov imm32 -> r/m64 (sign extend)*/
pike.git/src/code/amd64.c:645:    }    else    {    if( to_reg == P_REG_RAX )    Pike_fatal( "Clobbered TMP P_REG_RAX reg\n");    mov_imm_reg( imm, P_REG_RAX );    mov_reg_mem( P_REG_RAX, to_reg, offset );    }   }    -  -  +    static void mov_imm_mem32( int imm, enum amd64_reg to_reg, ptrdiff_t offset )   {    rex( 0, 0, 0, to_reg );    opcode( 0xc7 ); /* mov imm32 -> r/m32 (sign extend)*/    /* This does not work for rg&7 == 4 or 5. */    offset_modrm_sib( offset, 0, to_reg );    id( imm );   }      static void sub_reg_imm( enum amd64_reg reg, int imm32 );