pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:621:    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 );   } + #endif      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)*/    offset_modrm_sib( offset, 0, to_reg );
pike.git/src/code/amd64.c:3847:    mov_mem_reg( fp_reg, OFFSETOF(pike_frame, locals), P_REG_RAX);    add_reg_imm( P_REG_RAX, b*sizeof(struct svalue));       mov_imm_mem( T_SVALUE_PTR, sp_reg, OFFSETOF(svalue, tu.t.type));    mov_reg_mem( P_REG_RAX, sp_reg, OFFSETOF(svalue,u.lval) );    mov_imm_mem( T_VOID, sp_reg,    OFFSETOF(svalue, tu.t.type)+sizeof(struct svalue));    amd64_add_sp( 2 );    return;    - #if 0 -  /* TODO: needs mov_imm_mem16 */ +     case F_PROTECT_STACK:    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_load_fp_reg(); -  mov_mem_reg(fp_reg, OFFSETOF(pike_frame, locals), ARG1_REG); -  if (b) { -  add_reg_imm_reg(ARG1_REG, sizeof(struct svalue) * b, ARG1_REG); -  } -  mov_reg_mem(ARG1_REG, fp_reg, -  OFFSETOF(pike_frame, expendible)); +  mov_imm_mem16(b, fp_reg, OFFSETOF(pike_frame, expendible_offset));    return; - #endif +     case F_MARK_AT:    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_load_fp_reg();    amd64_load_mark_sp_reg();    mov_mem_reg(fp_reg, OFFSETOF(pike_frame, locals), ARG1_REG);    if (b) {    add_reg_imm_reg(ARG1_REG, sizeof(struct svalue) * b, ARG1_REG);    }    mov_reg_mem(ARG1_REG, mark_sp_reg, 0x00);    amd64_add_mark_sp( 1 );