5
5
* Copyright: Copyright (C) 1984-1998 by Symantec
6
6
* Copyright (c) 2000-2017 by Digital Mars, All Rights Reserved
7
7
* Authors: $(LINK2 http://www.digitalmars.com, Walter Bright)
8
- * License: Distributed under the Boost Software License, Version 1.0.
9
- * http://www.boost.org/LICENSE_1_0.txt
10
- * Source: https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cod1.c
8
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
9
+ * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cod1.c, backend/cod1.c)
11
10
*/
12
11
13
12
#if !SPP
@@ -373,7 +372,7 @@ void genstackclean(CodeBuilder& cdb,unsigned numpara,regm_t keepmsk)
373
372
!config .windows &&
374
373
!(regcon .mvar & fregsaved ) // and no registers will be pushed
375
374
)
376
- cdb . append ( genregs (CNIL ,0x89 ,BP ,SP ) ); // MOV SP,BP
375
+ genregs (cdb ,0x89 ,BP ,SP ); // MOV SP,BP
377
376
else
378
377
#endif
379
378
{ regm_t scratchm = 0 ;
@@ -668,7 +667,7 @@ void loadea(CodeBuilder& cdb,elem *e,code *cs,unsigned op,unsigned reg,targ_size
668
667
code_orrex (cdb .last (), REX_W );
669
668
}
670
669
else if (reg == 6 ) // if DIV
671
- cdb . append ( genregs (CNIL ,0x33 ,DX ,DX ) ); // XOR DX,DX
670
+ genregs (cdb ,0x33 ,DX ,DX ); // XOR DX,DX
672
671
}
673
672
674
673
// Eliminate MOV reg,reg
@@ -1024,7 +1023,7 @@ void getlvalue(CodeBuilder& cdb,code *pcs,elem *e,regm_t keepmsk)
1024
1023
allocreg (cdb ,& idxregs ,& msreg ,TYfptr );
1025
1024
msreg = findregmsw (idxregs );
1026
1025
/* MOV msreg,segreg */
1027
- cdb . append ( genregs (CNIL ,0x8C ,segfl [f ],msreg ) );
1026
+ genregs (cdb ,0x8C ,segfl [f ],msreg );
1028
1027
}
1029
1028
opsave = pcs -> Iop ;
1030
1029
flagsave = pcs -> Iflags ;
@@ -1521,7 +1520,7 @@ void tstresult(CodeBuilder& cdb,regm_t regm,tym_t tym,unsigned saveflag)
1521
1520
if (sz == 1 )
1522
1521
{
1523
1522
assert (regm & BYTEREGS );
1524
- cdb . append ( genregs (CNIL ,0x84 ,reg ,reg ) ); // TEST regL,regL
1523
+ genregs (cdb ,0x84 ,reg ,reg ); // TEST regL,regL
1525
1524
if (I64 && reg >= 4 )
1526
1525
code_orrex (cdb .last (), REX );
1527
1526
return ;
@@ -1562,14 +1561,14 @@ void tstresult(CodeBuilder& cdb,regm_t regm,tym_t tym,unsigned saveflag)
1562
1561
cdb .gen2 (0xD1 ,modregrmx (3 ,4 ,reg )); // SHL reg,1
1563
1562
return ;
1564
1563
}
1565
- cdb . append ( gentstreg (CNIL ,reg ) ); // TEST reg,reg
1564
+ gentstreg (cdb ,reg ); // TEST reg,reg
1566
1565
if (sz == SHORTSIZE )
1567
1566
cdb .last ()-> Iflags |= CFopsize ; // 16 bit operands
1568
1567
else if (sz == 8 )
1569
1568
code_orrex (cdb .last (), REX_W );
1570
1569
}
1571
1570
else
1572
- cdb . append ( gentstreg (CNIL ,reg ) ); // TEST reg,reg
1571
+ gentstreg (cdb ,reg ); // TEST reg,reg
1573
1572
return ;
1574
1573
}
1575
1574
@@ -1585,7 +1584,7 @@ void tstresult(CodeBuilder& cdb,regm_t regm,tym_t tym,unsigned saveflag)
1585
1584
if (I32 )
1586
1585
{
1587
1586
if (tyfv (tym ))
1588
- cdb . append ( genregs (CNIL ,0x0FB7 ,scrreg ,reg ) ); // MOVZX scrreg,msreg
1587
+ genregs (cdb ,0x0FB7 ,scrreg ,reg ); // MOVZX scrreg,msreg
1589
1588
else
1590
1589
{ cdb .append (genmovreg (CNIL ,scrreg ,reg )); // MOV scrreg,msreg
1591
1590
if (tym == TYdouble || tym == TYdouble_alias )
@@ -1599,17 +1598,17 @@ void tstresult(CodeBuilder& cdb,regm_t regm,tym_t tym,unsigned saveflag)
1599
1598
cdb .gen2 (0xD1 ,modregrm (3 ,4 ,scrreg )); // SHL scrreg,1
1600
1599
}
1601
1600
reg = findreglsw (regm );
1602
- cdb . append ( genorreg (CNIL ,scrreg ,reg ) ); // OR scrreg,lsreg
1601
+ genorreg (cdb ,scrreg ,reg ); // OR scrreg,lsreg
1603
1602
}
1604
1603
else if (sz == 8 )
1605
1604
{
1606
1605
// !I32
1607
1606
cdb .append (genmovreg (CNIL ,scrreg ,AX )); // MOV scrreg,AX
1608
1607
if (tym == TYdouble || tym == TYdouble_alias )
1609
1608
cdb .gen2 (0xD1 ,modregrm (3 ,4 ,scrreg )); // SHL scrreg,1
1610
- cdb . append ( genorreg (CNIL ,scrreg ,BX ) ); // OR scrreg,BX
1611
- cdb . append ( genorreg (CNIL ,scrreg ,CX ) ); // OR scrreg,CX
1612
- cdb . append ( genorreg (CNIL ,scrreg ,DX ) ); // OR scrreg,DX
1609
+ genorreg (cdb ,scrreg ,BX ); // OR scrreg,BX
1610
+ genorreg (cdb ,scrreg ,CX ); // OR scrreg,CX
1611
+ genorreg (cdb ,scrreg ,DX ); // OR scrreg,DX
1613
1612
}
1614
1613
else
1615
1614
assert (0 );
@@ -1625,7 +1624,7 @@ void tstresult(CodeBuilder& cdb,regm_t regm,tym_t tym,unsigned saveflag)
1625
1624
getregs (cdb ,mask [reg ]); // we're going to trash reg
1626
1625
if (tyfloating (tym ) && sz == 2 * intsize )
1627
1626
cdb .gen2 (0xD1 ,modregrm (3 ,4 ,reg )); // SHL reg,1
1628
- cdb . append ( genorreg (CNIL ,reg ,findreglsw (regm ) )); // OR reg,reg+1
1627
+ genorreg (cdb ,reg ,findreglsw (regm )); // OR reg,reg+1
1629
1628
if (I64 )
1630
1629
code_orrex (cdb .last (), REX_W );
1631
1630
}
@@ -1634,9 +1633,9 @@ void tstresult(CodeBuilder& cdb,regm_t regm,tym_t tym,unsigned saveflag)
1634
1633
getregs (cdb ,mAX ); // allocate AX
1635
1634
if (tym == TYdouble || tym == TYdouble_alias )
1636
1635
cdb .gen2 (0xD1 ,modregrm (3 ,4 ,AX )); // SHL AX,1
1637
- cdb . append ( genorreg (CNIL ,AX ,BX ) ); // OR AX,BX
1638
- cdb . append ( genorreg (CNIL ,AX ,CX ) ); // OR AX,CX
1639
- cdb . append ( genorreg (CNIL ,AX ,DX ) ); // OR AX,DX
1636
+ genorreg (cdb ,AX ,BX ); // OR AX,BX
1637
+ genorreg (cdb ,AX ,CX ); // OR AX,CX
1638
+ genorreg (cdb ,AX ,DX ); // OR AX,DX
1640
1639
}
1641
1640
else
1642
1641
assert (0 );
@@ -3853,7 +3852,7 @@ void pushParams(CodeBuilder& cdb,elem *e,unsigned stackalign)
3853
3852
regm_t retregs = allregs ;
3854
3853
unsigned reg ;
3855
3854
allocreg (cdb ,& retregs ,& reg ,TYoffset );
3856
- cdb . append ( genregs (CNIL ,0x89 ,SP ,reg ) ); // MOV reg,SP
3855
+ genregs (cdb ,0x89 ,SP ,reg ); // MOV reg,SP
3857
3856
if (I64 )
3858
3857
code_orrex (cdb .last (), REX_W );
3859
3858
unsigned np = stackpush - e -> EV .Vuns ; // stack delta to parameter
@@ -4145,7 +4144,7 @@ void pushParams(CodeBuilder& cdb,elem *e,unsigned stackalign)
4145
4144
regm_t retregs ;
4146
4145
offsetinreg (cdb ,e ,& retregs );
4147
4146
unsigned reg = findreg (retregs );
4148
- cdb . append ( genpush (CNIL ,reg )); // PUSH reg
4147
+ genpush (cdb ,reg ); // PUSH reg
4149
4148
cdb .append (genadjesp (CNIL ,REGSIZE ));
4150
4149
}
4151
4150
return ;
@@ -4302,7 +4301,7 @@ void pushParams(CodeBuilder& cdb,elem *e,unsigned stackalign)
4302
4301
{
4303
4302
regwithvalue (cdb ,allregs ,value ,& reg ,0 );
4304
4303
Preg :
4305
- cdb . append ( genpush (CNIL ,reg ) ); // PUSH reg
4304
+ genpush (cdb ,reg ); // PUSH reg
4306
4305
}
4307
4306
code_orflag (cdb .last (),flag ); // operand size
4308
4307
} while (i );
@@ -4381,7 +4380,7 @@ void pushParams(CodeBuilder& cdb,elem *e,unsigned stackalign)
4381
4380
retregs = IDXREGS ; // get an index reg
4382
4381
unsigned reg ;
4383
4382
allocreg (cdb ,& retregs ,& reg ,TYoffset );
4384
- cdb . append ( genregs (CNIL ,0x89 ,SP ,reg ) ); // MOV reg,SP
4383
+ genregs (cdb ,0x89 ,SP ,reg ); // MOV reg,SP
4385
4384
pop87 ();
4386
4385
cdb .gen2 (op ,modregrm (0 ,r ,regtorm [reg ])); // FSTP [reg]
4387
4386
}
@@ -4401,13 +4400,13 @@ void pushParams(CodeBuilder& cdb,elem *e,unsigned stackalign)
4401
4400
stackpush += sz ;
4402
4401
if (sz <= REGSIZE )
4403
4402
{
4404
- cdb . append ( genpush (CNIL ,findreg (retregs ) )); // PUSH reg
4403
+ genpush (cdb ,findreg (retregs )); // PUSH reg
4405
4404
cdb .append (genadjesp (CNIL ,REGSIZE ));
4406
4405
}
4407
4406
else if (sz == REGSIZE * 2 )
4408
4407
{
4409
- cdb . append ( genpush (CNIL ,findregmsw (retregs ) )); // PUSH msreg
4410
- cdb . append ( genpush (CNIL ,findreglsw (retregs ) )); // PUSH lsreg
4408
+ genpush (cdb ,findregmsw (retregs )); // PUSH msreg
4409
+ genpush (cdb ,findreglsw (retregs )); // PUSH lsreg
4411
4410
cdb .append (genadjesp (CNIL ,sz ));
4412
4411
}
4413
4412
}
@@ -4496,7 +4495,7 @@ void loaddata(CodeBuilder& cdb,elem *e,regm_t *pretregs)
4496
4495
if (e -> Eoper == OPconst )
4497
4496
{ /* TRUE: OR SP,SP (SP is never 0) */
4498
4497
/* FALSE: CMP SP,SP (always equal) */
4499
- cdb . append ( genregs (CNIL ,(boolres (e )) ? 0x09 : 0x39 ,SP ,SP ) );
4498
+ genregs (cdb ,(boolres (e )) ? 0x09 : 0x39 ,SP ,SP );
4500
4499
if (I64 )
4501
4500
code_orrex (cdb .last (), REX_W );
4502
4501
}
@@ -4651,7 +4650,7 @@ void loaddata(CodeBuilder& cdb,elem *e,regm_t *pretregs)
4651
4650
if (forregs & mES )
4652
4651
{
4653
4652
movregconst (cdb ,reg ,msw ,0 ); // MOV reg,segment
4654
- cdb . append ( genregs (CNIL ,0x8E ,0 ,reg ) ); // MOV ES,reg
4653
+ genregs (cdb ,0x8E ,0 ,reg ); // MOV ES,reg
4655
4654
msw = lsw ; // MOV reg,offset
4656
4655
}
4657
4656
else
0 commit comments