pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:578:      static void sub_reg_imm( enum amd64_reg reg, int imm32 );      static void neg_mem( enum amd64_reg reg, int off )   {    rex( 1, 0, 0, reg );    opcode(0xf7);    offset_modrm_sib( off, 3, reg );   }    + static void not_mem( enum amd64_reg reg, int off ) + { +  rex( 1, 0, 0, reg ); +  opcode(0xf7); +  offset_modrm_sib( off, 2, reg ); + } +    static void add_reg_imm( enum amd64_reg reg, int imm32 )   {    if( !imm32 ) return;    if( imm32 < 0 )    {    /* This makes the disassembly easier to read. */    sub_reg_imm( reg, -imm32 );    return;    }   
pike.git/src/code/amd64.c:1859:    LABEL_A;    amd64_call_c_opcode(addr, flags);    jmp(&label_C);    LABEL_B;    neg_mem(sp_reg, SVAL(-1).value );    jo(&label_D);    LABEL_C;    }    return;    +  case F_COMPL: +  { +  LABELS(); +  ins_debug_instr_prologue(b, 0, 0); +  amd64_load_sp_reg(); +  mov_mem8_reg(sp_reg, SVAL(-1).type, P_REG_RAX ); +  test_reg32(P_REG_RAX); +  jz(&label_B); +  LABEL_A; +  amd64_call_c_opcode(addr, flags); +  jmp(&label_C); +  LABEL_B; +  not_mem(sp_reg, SVAL(-1).value ); +  LABEL_C; +  } +  return; +     case F_AND:    {    LABELS();    ins_debug_instr_prologue(b, 0, 0);    amd64_load_sp_reg();    mov_mem8_reg(sp_reg, SVAL(-1).type, P_REG_RAX );    mov_mem8_reg(sp_reg, SVAL(-2).type, P_REG_RBX );    add_reg_reg(P_REG_RAX,P_REG_RBX);    /* test_reg32(P_REG_RAX); int == 0 */    jnz(&label_A);
pike.git/src/code/amd64.c:2864:    ins_debug_instr_prologue(b, 0, 0);    amd64_load_sp_reg();    mov_mem8_reg(sp_reg, SVAL(-1).type, P_REG_RAX );    test_reg(P_REG_RAX);    jnz(&label_A);       /* FIXME: and_mem_imm */    mov_mem_reg(sp_reg, SVAL(-1).value, P_REG_RAX );    and_reg_imm(P_REG_RAX,b);    mov_imm_mem(PIKE_T_INT,sp_reg,SVAL(-1).type); -  mov_reg_mem(P_REG_RBX,sp_reg,SVAL(-1).value); +  mov_reg_mem(P_REG_RAX,sp_reg,SVAL(-1).value);    jmp(&label_B);    LABEL_A;    update_arg1(b);    amd64_call_c_opcode(instrs[a-F_OFFSET].address,    instrs[a-F_OFFSET].flags);    LABEL_B;    }    return;       case F_OR_INT: