mirror of https://github.com/red-prig/fpPS4.git
This commit is contained in:
parent
c2991ffd65
commit
6ebcf51c08
|
@ -22,7 +22,7 @@ type
|
||||||
ALock :Boolean;
|
ALock :Boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
t_op_opt=Set of (not_impl,not_prefix,not_vex_len);
|
t_op_opt=Set of (not_impl,not_os8,not_prefix,not_vex_len);
|
||||||
|
|
||||||
t_op_type=packed object
|
t_op_type=packed object
|
||||||
op :DWORD;
|
op :DWORD;
|
||||||
|
@ -2153,7 +2153,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case mreg.AMemSize of
|
case mreg.AMemSize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2234,7 +2234,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case mreg.AMemSize of
|
case mreg.AMemSize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2323,7 +2323,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case mreg.AMemSize of
|
case mreg.AMemSize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2405,7 +2405,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case size of
|
case size of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2475,7 +2475,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case size of
|
case size of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2551,7 +2551,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case size of
|
case size of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2609,7 +2609,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case reg.ASize of
|
case reg.ASize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2658,7 +2658,7 @@ begin
|
||||||
|
|
||||||
case Size of
|
case Size of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in opt)) then
|
if (not (not_os8 in opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2729,7 +2729,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case reg.ASize of
|
case reg.ASize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2829,7 +2829,7 @@ begin
|
||||||
begin
|
begin
|
||||||
case mreg.AMemSize of
|
case mreg.AMemSize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2904,7 +2904,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case reg.ASize of
|
case reg.ASize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
@ -2971,7 +2971,7 @@ begin
|
||||||
op:=desc.op;
|
op:=desc.op;
|
||||||
case mreg.AMemSize of
|
case mreg.AMemSize of
|
||||||
os8:
|
os8:
|
||||||
if (not (not_prefix in desc.opt)) then
|
if (not (not_os8 in desc.opt)) then
|
||||||
begin
|
begin
|
||||||
Dec(op);
|
Dec(op);
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -671,7 +671,7 @@ begin
|
||||||
|
|
||||||
if (p_print_jit_preload<>0) then
|
if (p_print_jit_preload<>0) then
|
||||||
begin
|
begin
|
||||||
Writeln('build_chunk:0x',HexStr(jcode^.dest,16),'..',HexStr(jcode^.d_end,16),':',i,':',count);
|
Writeln('build_chunk:0x',HexStr(jcode^.dest,16),'..',HexStr(jcode^.d_end,16),':',count);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//writeln('[0x',HexStr(start,16),':0x',HexStr(__end,16),':',count);
|
//writeln('[0x',HexStr(start,16),':0x',HexStr(__end,16),':',count);
|
||||||
|
|
|
@ -914,7 +914,26 @@ begin
|
||||||
|
|
||||||
tmp.op :=ctx.dis.opcode;
|
tmp.op :=ctx.dis.opcode;
|
||||||
tmp.index:=ctx.dis.ModRM.Index;
|
tmp.index:=ctx.dis.ModRM.Index;
|
||||||
tmp.opt :=[not_prefix];
|
tmp.opt :=[not_os8];
|
||||||
|
|
||||||
|
op_emit1(ctx,tmp,[]);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
add_orig(ctx);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure op_emit1_gn_np(var ctx:t_jit_context2);
|
||||||
|
var
|
||||||
|
tmp:t_op_type;
|
||||||
|
begin
|
||||||
|
if is_preserved(ctx.din) or is_memory(ctx.din) then
|
||||||
|
begin
|
||||||
|
tmp:=Default(t_op_type);
|
||||||
|
|
||||||
|
tmp.op :=ctx.dis.opcode;
|
||||||
|
tmp.index:=ctx.dis.ModRM.Index;
|
||||||
|
tmp.opt :=[not_os8,not_prefix];
|
||||||
|
|
||||||
op_emit1(ctx,tmp,[]);
|
op_emit1(ctx,tmp,[]);
|
||||||
end else
|
end else
|
||||||
|
@ -933,7 +952,26 @@ begin
|
||||||
|
|
||||||
tmp.op :=ctx.dis.opcode;
|
tmp.op :=ctx.dis.opcode;
|
||||||
tmp.index:=ctx.dis.ModRM.Index;
|
tmp.index:=ctx.dis.ModRM.Index;
|
||||||
tmp.opt :=[not_prefix];
|
tmp.opt :=[not_os8];
|
||||||
|
|
||||||
|
op_emit1(ctx,tmp,[his_ro]);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
add_orig(ctx);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure op_emit1_ro_np(var ctx:t_jit_context2);
|
||||||
|
var
|
||||||
|
tmp:t_op_type;
|
||||||
|
begin
|
||||||
|
if is_preserved(ctx.din) or is_memory(ctx.din) then
|
||||||
|
begin
|
||||||
|
tmp:=Default(t_op_type);
|
||||||
|
|
||||||
|
tmp.op :=ctx.dis.opcode;
|
||||||
|
tmp.index:=ctx.dis.ModRM.Index;
|
||||||
|
tmp.opt :=[not_os8,not_prefix];
|
||||||
|
|
||||||
op_emit1(ctx,tmp,[his_ro]);
|
op_emit1(ctx,tmp,[his_ro]);
|
||||||
end else
|
end else
|
||||||
|
@ -952,7 +990,26 @@ begin
|
||||||
|
|
||||||
tmp.op :=ctx.dis.opcode;
|
tmp.op :=ctx.dis.opcode;
|
||||||
tmp.index:=ctx.dis.ModRM.Index;
|
tmp.index:=ctx.dis.ModRM.Index;
|
||||||
tmp.opt :=[not_prefix];
|
tmp.opt :=[not_os8];
|
||||||
|
|
||||||
|
op_emit1(ctx,tmp,[his_rw]);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
add_orig(ctx);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure op_emit1_rw_np(var ctx:t_jit_context2);
|
||||||
|
var
|
||||||
|
tmp:t_op_type;
|
||||||
|
begin
|
||||||
|
if is_preserved(ctx.din) or is_memory(ctx.din) then
|
||||||
|
begin
|
||||||
|
tmp:=Default(t_op_type);
|
||||||
|
|
||||||
|
tmp.op :=ctx.dis.opcode;
|
||||||
|
tmp.index:=ctx.dis.ModRM.Index;
|
||||||
|
tmp.opt :=[not_os8,not_prefix];
|
||||||
|
|
||||||
op_emit1(ctx,tmp,[his_rw]);
|
op_emit1(ctx,tmp,[his_rw]);
|
||||||
end else
|
end else
|
||||||
|
@ -1199,7 +1256,7 @@ end;
|
||||||
const
|
const
|
||||||
movx_desc:t_op_desc=(
|
movx_desc:t_op_desc=(
|
||||||
mem_reg:(opt:[not_impl]);
|
mem_reg:(opt:[not_impl]);
|
||||||
reg_mem:(op:$00;opt:[not_prefix]);
|
reg_mem:(op:$00;opt:[not_os8]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -1253,8 +1310,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movbe_desc:t_op_desc=(
|
movbe_desc:t_op_desc=(
|
||||||
mem_reg:(op:$0F38F1;opt:[not_prefix]);
|
mem_reg:(op:$0F38F1;opt:[not_os8]);
|
||||||
reg_mem:(op:$0F38F0;opt:[not_prefix]);
|
reg_mem:(op:$0F38F0;opt:[not_os8]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -1274,7 +1331,7 @@ end;
|
||||||
const
|
const
|
||||||
movsxd_desc:t_op_desc=(
|
movsxd_desc:t_op_desc=(
|
||||||
mem_reg:(opt:[not_impl]);
|
mem_reg:(opt:[not_impl]);
|
||||||
reg_mem:(op:$63;opt:[not_prefix]);
|
reg_mem:(op:$63;opt:[not_os8]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -1703,22 +1760,22 @@ begin
|
||||||
jit_cbs[OPPnone,OPshl ,OPSx_d ]:=@op_shld;
|
jit_cbs[OPPnone,OPshl ,OPSx_d ]:=@op_shld;
|
||||||
jit_cbs[OPPnone,OPshr ,OPSx_d ]:=@op_shrd;
|
jit_cbs[OPPnone,OPshr ,OPSx_d ]:=@op_shrd;
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_o ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_o ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_no ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_no ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_b ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_b ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_nb ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_nb ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_z ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_z ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_nz ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_nz ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_be ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_be ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_nbe]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_nbe]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_s ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_s ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_ns ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_ns ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_p ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_p ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_np ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_np ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_l ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_l ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_nl ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_nl ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_le ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_le ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPset__,OPSc_nle]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPset__,OPSc_nle]:=@op_emit1_gn_np;
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPemms ,OPSnone]:=@add_orig;
|
jit_cbs[OPPnone,OPemms ,OPSnone]:=@add_orig;
|
||||||
jit_cbs[OPPnone,OPfemms ,OPSnone]:=@add_orig;
|
jit_cbs[OPPnone,OPfemms ,OPSnone]:=@add_orig;
|
||||||
|
@ -1832,42 +1889,42 @@ begin
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPfldcw ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfldcw ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfld ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfld ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfild ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfild ,OPSnone]:=@op_emit1_ro_np;
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPfldenv ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfldenv ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfnstenv,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfnstenv,OPSnone]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfnstcw ,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfnstcw ,OPSnone]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfnstsw ,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfnstsw ,OPSnone]:=@op_emit1_gn_np;
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPfxsave ,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfxsave ,OPSnone]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfxrstor,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfxrstor,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfst ,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfst ,OPSnone]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfst ,OPSx_p ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfst ,OPSx_p ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfist ,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfist ,OPSnone]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfist ,OPSx_p ]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfist ,OPSx_p ]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfisttp ,OPSnone]:=@op_emit1_gn;
|
jit_cbs[OPPnone,OPfisttp ,OPSnone]:=@op_emit1_gn_np;
|
||||||
jit_cbs[OPPnone,OPfadd ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfadd ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfiadd ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfiadd ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfmul ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfmul ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfimul ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfimul ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfsub ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfsub ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfsubr ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfsubr ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfisub ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfisub ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfdiv ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfdiv ,OPSnone]:=@op_emit1_ro_np;
|
||||||
jit_cbs[OPPnone,OPfdivr ,OPSnone]:=@op_emit1_ro;
|
jit_cbs[OPPnone,OPfdivr ,OPSnone]:=@op_emit1_ro_np;
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPclflush,OPSnone]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPclflush,OPSnone]:=@op_emit1_rw_np;
|
||||||
|
|
||||||
//fpu
|
//fpu
|
||||||
|
|
||||||
jit_cbs[OPPnone,OPprefetch,OPSnone ]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPprefetch,OPSnone ]:=@op_emit1_rw_np;
|
||||||
jit_cbs[OPPnone,OPprefetch,OPSp_w ]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPprefetch,OPSp_w ]:=@op_emit1_rw_np;
|
||||||
jit_cbs[OPPnone,OPprefetch,OPSp_nta]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPprefetch,OPSp_nta]:=@op_emit1_rw_np;
|
||||||
jit_cbs[OPPnone,OPprefetch,OPSp_t0 ]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPprefetch,OPSp_t0 ]:=@op_emit1_rw_np;
|
||||||
jit_cbs[OPPnone,OPprefetch,OPSp_t1 ]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPprefetch,OPSp_t1 ]:=@op_emit1_rw_np;
|
||||||
jit_cbs[OPPnone,OPprefetch,OPSp_t2 ]:=@op_emit1_rw;
|
jit_cbs[OPPnone,OPprefetch,OPSp_t2 ]:=@op_emit1_rw_np;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ end;
|
||||||
procedure op_emit2_simd_mem_reg(var ctx:t_jit_context2;hint:t_op_hint);
|
procedure op_emit2_simd_mem_reg(var ctx:t_jit_context2;hint:t_op_hint);
|
||||||
const
|
const
|
||||||
desc:t_op_desc=(
|
desc:t_op_desc=(
|
||||||
mem_reg:(op:0;opt:[not_prefix]);
|
mem_reg:(op:0;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(opt:[not_impl]);
|
reg_mem:(opt:[not_impl]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
|
@ -81,7 +81,7 @@ procedure op_emit2_simd_reg_mem(var ctx:t_jit_context2;hint:t_op_hint);
|
||||||
const
|
const
|
||||||
desc:t_op_desc=(
|
desc:t_op_desc=(
|
||||||
mem_reg:(opt:[not_impl]);
|
mem_reg:(opt:[not_impl]);
|
||||||
reg_mem:(op:0;opt:[not_prefix]);
|
reg_mem:(op:0;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[];
|
hint:[];
|
||||||
|
@ -159,8 +159,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movsd_desc:t_op_desc=(
|
movsd_desc:t_op_desc=(
|
||||||
mem_reg:(op:$F20F11;opt:[not_prefix]);
|
mem_reg:(op:$F20F11;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$F20F10;opt:[not_prefix]);
|
reg_mem:(op:$F20F10;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -179,8 +179,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movss_desc:t_op_desc=(
|
movss_desc:t_op_desc=(
|
||||||
mem_reg:(op:$F30F11;opt:[not_prefix]);
|
mem_reg:(op:$F30F11;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$F30F10;opt:[not_prefix]);
|
reg_mem:(op:$F30F10;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -199,8 +199,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
mov_dq_desc:t_op_desc=(
|
mov_dq_desc:t_op_desc=(
|
||||||
mem_reg:(op:$0F7E;opt:[not_prefix]);
|
mem_reg:(op:$0F7E;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$0F6E;opt:[not_prefix]);
|
reg_mem:(op:$0F6E;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -219,8 +219,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movdqa_desc:t_op_desc=(
|
movdqa_desc:t_op_desc=(
|
||||||
mem_reg:(op:$660F7F;opt:[not_prefix]);
|
mem_reg:(op:$660F7F;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$660F6F;opt:[not_prefix]);
|
reg_mem:(op:$660F6F;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo,his_align];
|
hint:[his_mov,his_wo,his_align];
|
||||||
|
@ -239,8 +239,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movdqu_desc:t_op_desc=(
|
movdqu_desc:t_op_desc=(
|
||||||
mem_reg:(op:$F30F7F;opt:[not_prefix]);
|
mem_reg:(op:$F30F7F;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$F30F6F;opt:[not_prefix]);
|
reg_mem:(op:$F30F6F;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -261,8 +261,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movu_ps_pd_desc:t_op_desc=(
|
movu_ps_pd_desc:t_op_desc=(
|
||||||
mem_reg:(op:$0F11;opt:[not_prefix]);
|
mem_reg:(op:$0F11;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$0F10;opt:[not_prefix]);
|
reg_mem:(op:$0F10;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -283,8 +283,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
mova_ps_pd_desc:t_op_desc=(
|
mova_ps_pd_desc:t_op_desc=(
|
||||||
mem_reg:(op:$0F29;opt:[not_prefix]);
|
mem_reg:(op:$0F29;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$0F28;opt:[not_prefix]);
|
reg_mem:(op:$0F28;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo,his_align];
|
hint:[his_mov,his_wo,his_align];
|
||||||
|
@ -306,7 +306,7 @@ end;
|
||||||
const
|
const
|
||||||
movntdqa_desc:t_op_desc=(
|
movntdqa_desc:t_op_desc=(
|
||||||
mem_reg:(opt:[not_impl]);
|
mem_reg:(opt:[not_impl]);
|
||||||
reg_mem:(op:$660F382A;opt:[not_prefix]);
|
reg_mem:(op:$660F382A;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo,his_align];
|
hint:[his_mov,his_wo,his_align];
|
||||||
|
@ -334,8 +334,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movl_ps_pd_desc:t_op_desc=(
|
movl_ps_pd_desc:t_op_desc=(
|
||||||
mem_reg:(op:$0F13;opt:[not_prefix]);
|
mem_reg:(op:$0F13;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$0F12;opt:[not_prefix]);
|
reg_mem:(op:$0F12;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -356,8 +356,8 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
movh_ps_pd_desc:t_op_desc=(
|
movh_ps_pd_desc:t_op_desc=(
|
||||||
mem_reg:(op:$0F17;opt:[not_prefix]);
|
mem_reg:(op:$0F17;opt:[not_os8,not_prefix]);
|
||||||
reg_mem:(op:$0F16;opt:[not_prefix]);
|
reg_mem:(op:$0F16;opt:[not_os8,not_prefix]);
|
||||||
reg_imm:(opt:[not_impl]);
|
reg_imm:(opt:[not_impl]);
|
||||||
reg_im8:(opt:[not_impl]);
|
reg_im8:(opt:[not_impl]);
|
||||||
hint:[his_mov,his_wo];
|
hint:[his_mov,his_wo];
|
||||||
|
@ -379,7 +379,7 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
ldmxcsr_desc:t_op_type=(
|
ldmxcsr_desc:t_op_type=(
|
||||||
op:$0FAE;index:2;opt:[not_prefix];
|
op:$0FAE;index:2;opt:[not_os8,not_prefix];
|
||||||
);
|
);
|
||||||
|
|
||||||
procedure op_ldmxcsr(var ctx:t_jit_context2);
|
procedure op_ldmxcsr(var ctx:t_jit_context2);
|
||||||
|
@ -389,7 +389,7 @@ end;
|
||||||
|
|
||||||
const
|
const
|
||||||
stmxcsr_desc:t_op_type=(
|
stmxcsr_desc:t_op_type=(
|
||||||
op:$0FAE;index:3;opt:[not_prefix];
|
op:$0FAE;index:3;opt:[not_os8,not_prefix];
|
||||||
);
|
);
|
||||||
|
|
||||||
procedure op_stmxcsr(var ctx:t_jit_context2);
|
procedure op_stmxcsr(var ctx:t_jit_context2);
|
||||||
|
|
|
@ -137,6 +137,9 @@ begin
|
||||||
td^.td_frame.tf_rip:=tf_addr;
|
td^.td_frame.tf_rip:=tf_addr;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Writeln('tf_tsp:0x',HexStr(td^.td_frame.tf_rsp,16));
|
||||||
|
Writeln('tf_tbp:0x',HexStr(td^.td_frame.tf_rbp,16));
|
||||||
|
|
||||||
print_backtrace_td(stderr);
|
print_backtrace_td(stderr);
|
||||||
|
|
||||||
td^.td_frame.tf_trapno:=0;
|
td^.td_frame.tf_trapno:=0;
|
||||||
|
|
Loading…
Reference in New Issue