예제 #1
0
void sse2_movd( struct x86_function *p,
		struct x86_reg dst,
		struct x86_reg src )
{
   emit_2ub(p, 0x66, X86_TWOB);
   emit_op_modrm( p, 0x6e, 0x7e, dst, src );
}
예제 #2
0
void sse_movups( struct x86_function *p,
		 struct x86_reg dst,
		 struct x86_reg src )
{
   emit_1ub(p, X86_TWOB);
   emit_op_modrm( p, 0x10, 0x11, dst, src );
}
예제 #3
0
void x86_and( struct x86_function *p,
              struct x86_reg dst,
              struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_op_modrm( p, 0x23, 0x21, dst, src );
}
예제 #4
0
void x86_or( struct x86_function *p,
             struct x86_reg dst,
             struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_op_modrm( p, 0x0b, 0x09, dst, src );
}
예제 #5
0
void x86_sub( struct x86_function *p,
	       struct x86_reg dst,
	       struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_op_modrm(p, 0x2b, 0x29, dst, src );
}
예제 #6
0
void x86_cmp( struct x86_function *p,
	      struct x86_reg dst,
	      struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_op_modrm( p, 0x3b, 0x39, dst, src );
}
예제 #7
0
void x86_xor( struct x86_function *p,
	      struct x86_reg dst,
	      struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_op_modrm( p, 0x33, 0x31, dst, src );
}
예제 #8
0
void sse_movlps( struct x86_function *p,
		 struct x86_reg dst,
		 struct x86_reg src )
{
   assert(dst.mod != mod_REG || src.mod != mod_REG);
   emit_1ub(p, X86_TWOB);
   emit_op_modrm( p, 0x12, 0x13, dst, src ); /* cf movhlps */
}
예제 #9
0
void mmx_movq( struct x86_function *p,
	       struct x86_reg dst,
	       struct x86_reg src )
{
   p->need_emms = 1;
   emit_1ub(p, X86_TWOB);
   emit_op_modrm( p, 0x6f, 0x7f, dst, src );
}
예제 #10
0
void sse_movaps( struct x86_function *p,
		 struct x86_reg dst,
		 struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_1ub(p, X86_TWOB);
   emit_op_modrm( p, 0x28, 0x29, dst, src );
}
예제 #11
0
void sse_movss( struct x86_function *p,
		struct x86_reg dst,
		struct x86_reg src )
{
   DUMP_RR( dst, src );
   emit_2ub(p, 0xF3, X86_TWOB);
   emit_op_modrm( p, 0x10, 0x11, dst, src );
}
예제 #12
0
void sse_movhps( struct x86_function *p,
		 struct x86_reg dst,
		 struct x86_reg src )
{
   DUMP_RR( dst, src );
   assert(dst.mod != mod_REG || src.mod != mod_REG);
   emit_1ub(p, X86_TWOB);
   emit_op_modrm( p, 0x16, 0x17, dst, src ); /* cf movlhps */
}
예제 #13
0
void mmx_movd( struct x86_function *p,
	       struct x86_reg dst,
	       struct x86_reg src )
{
   DUMP_RR( dst, src );
   p->need_emms = 1;
   emit_1ub(p, X86_TWOB);
   emit_op_modrm( p, 0x6e, 0x7e, dst, src );
}
예제 #14
0
void x86_mul( struct x86_function *p,
	       struct x86_reg src )
{
   assert (src.file == file_REG32 && src.mod == mod_REG);
   emit_op_modrm(p, 0xf7, 0, x86_make_reg (file_REG32, reg_SP), src );
}
예제 #15
0
void x86_add( struct x86_function *p,
	       struct x86_reg dst,
	       struct x86_reg src )
{
   emit_op_modrm(p, 0x03, 0x01, dst, src );
}
예제 #16
0
void x86_mov( struct x86_function *p,
	      struct x86_reg dst,
	      struct x86_reg src )
{
   emit_op_modrm( p, 0x8b, 0x89, dst, src );
}