|
@@ -28,17 +28,61 @@ unit hlcgcpu;
|
|
|
|
|
|
interface
|
|
|
|
|
|
+uses
|
|
|
+ globtype,
|
|
|
+ aasmbase, aasmdata,
|
|
|
+ cgbase, cgutils,
|
|
|
+ symconst,symtype,symdef,
|
|
|
+ parabase, hlcgobj, hlcg2ll;
|
|
|
+
|
|
|
+ type
|
|
|
+ thlcgm68k = class(thlcg2ll)
|
|
|
+ procedure a_bit_set_reg_reg(list: TAsmList; doset: boolean; bitnumbersize, destsize: tdef; bitnumber, dest: tregister); override;
|
|
|
+ procedure a_bit_set_const_reg(list: TAsmList; doset: boolean; destsize: tdef; bitnumber: tcgint; destreg: tregister); override;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
procedure create_hlcodegen;
|
|
|
|
|
|
implementation
|
|
|
|
|
|
uses
|
|
|
- hlcgobj, hlcg2ll,
|
|
|
+ verbose, systems,
|
|
|
+ aasmtai,
|
|
|
+ aasmcpu,
|
|
|
+ cutils,
|
|
|
+ globals,
|
|
|
+ defutil,
|
|
|
+ cgobj,
|
|
|
+ cpubase,
|
|
|
+ cpuinfo,
|
|
|
cgcpu;
|
|
|
|
|
|
+ procedure thlcgm68k.a_bit_set_reg_reg(list: TAsmList; doset: boolean; bitnumbersize, destsize: tdef; bitnumber, dest: tregister);
|
|
|
+ const
|
|
|
+ instr: array[boolean] of tasmop = (A_BCLR,A_BSET);
|
|
|
+ var
|
|
|
+ tmpvalue: tregister;
|
|
|
+ begin
|
|
|
+ tmpvalue:=getintregister(list,destsize);
|
|
|
+ //list.concat(tai_comment.create(strpnew('a_bit_set_reg_reg: called!')));
|
|
|
+ a_load_const_reg(list,u32inttype,destsize.size*8-1,tmpvalue);
|
|
|
+ a_op_reg_reg(list,OP_SUB,bitnumbersize,bitnumber,tmpvalue);
|
|
|
+ list.concat(taicpu.op_reg_reg(instr[doset],S_NO,tmpvalue,dest));
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure thlcgm68k.a_bit_set_const_reg(list: TAsmList; doset: boolean; destsize: tdef; bitnumber: tcgint; destreg: tregister);
|
|
|
+ const
|
|
|
+ instr: array[boolean] of tasmop = (A_BCLR,A_BSET);
|
|
|
+ begin
|
|
|
+ //list.concat(tai_comment.create(strpnew('a_bit_set_const_reg: called!')));
|
|
|
+ list.concat(taicpu.op_const_reg(instr[doset],S_NO,(destsize.size*8)-bitnumber-1,destreg));
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
procedure create_hlcodegen;
|
|
|
begin
|
|
|
- hlcg:=thlcg2ll.create;
|
|
|
+ hlcg:=thlcgm68k.create;
|
|
|
create_codegen;
|
|
|
end;
|
|
|
|