Commit Graph

52898 Commits

Author SHA1 Message Date
nickysn
7338437dcd * allow recordtype.recordfield constants to set the operand size; this makes things like
test [di + recordtype.recordfield], 1
  work, as long as the size of recordfield is a valid operand size for the target

git-svn-id: trunk@38175 -
2018-02-09 17:36:54 +00:00
nickysn
f829f70186 * use the 'size' return value of BuildConstSymbolExpression to set the operand size
git-svn-id: trunk@38174 -
2018-02-09 17:22:39 +00:00
nickysn
384715be8d + add an extra output parameter 'size' to tx86intreader.BuildConstSymbolExpression,
which allows const symbol expressions to also have a size sometimes. Why?
  Because TP7 (and perhaps Delphi) allows not specifying the size in e.g.
    test [di+recordtype.recordfield], 1
  in this case, the operand size (byte ptr, word ptr, dword ptr, qword ptr) is
  determined by the size of recordtype.recordfield; this already happens with
  variables, but in this case, this is a type.field, which is resolved to a
  constant.
  This commit only adds a dummy 'size' parameter, which is always initialized to
  0 and not used. The actual implementation of the above will follow in separate
  commits.

git-svn-id: trunk@38173 -
2018-02-09 16:52:12 +00:00
nickysn
4b339fd133 * convert the 'var' parameters of tx86intreader.BuildConstSymbolExpression to 'out'
git-svn-id: trunk@38172 -
2018-02-09 16:20:34 +00:00
nickysn
84611d716b * convert the 'var' parameters of tx86intreader.BuildRecordOffsetSize to 'out'
git-svn-id: trunk@38171 -
2018-02-09 16:15:40 +00:00
nickysn
b49c09b84c * convert the 'var' parameters of RAUtils.AsmSearchSym to 'out'
git-svn-id: trunk@38170 -
2018-02-09 15:59:18 +00:00
nickysn
4d0d143501 * converted the 'size' parameter to RAUtils.SearchType to 'out' instead of 'var'
git-svn-id: trunk@38169 -
2018-02-09 15:51:35 +00:00
nickysn
85c0b3854d * converted the 'var' parameters of RAUtils.GetRecordOffsetSize to 'out',
because they are output only

git-svn-id: trunk@38168 -
2018-02-09 15:49:00 +00:00
nickysn
391f85f828 + for TP7 compatibility, allow the '&', '$' and '?' characters in the x86 intel
syntax inline asm reader

git-svn-id: trunk@38167 -
2018-02-08 16:54:33 +00:00
nickysn
1709fa61a4 + extended test tasm17.pp with 'dw offset @jumptarget', 'dd @jumptarget' and
'dd offset @jumptarget'

git-svn-id: trunk@38166 -
2018-02-08 16:13:27 +00:00
nickysn
dd04114af9 + extended test tasm17.pp with 'DW @jumptarget'
git-svn-id: trunk@38165 -
2018-02-08 15:46:53 +00:00
nickysn
d65fb1907a + extended test tasm17.pp with 'DW/DD const+offset x'; unfortunately, TP7 also
supports 'DW/DD offset const+x', which we don't and I don't know whether we
  should

git-svn-id: trunk@38164 -
2018-02-08 15:41:03 +00:00
Mattias Gaertner
16e51bb58e pastojs: 0.9.4
git-svn-id: trunk@38163 -
2018-02-08 11:28:59 +00:00
Mattias Gaertner
740d141c2e fcl-passrc: resolver: nicer illegal qualifier error messages
git-svn-id: trunk@38162 -
2018-02-08 11:22:18 +00:00
pierre
ed695624ab Add clang as assembler for powerpc-darwin (powerpc64 is apparently not yet supported for MachO format)
git-svn-id: trunk@38161 -
2018-02-08 09:38:16 +00:00
Mattias Gaertner
948d12ea73 pastojs: read/write primitive number
git-svn-id: trunk@38160 -
2018-02-08 07:02:13 +00:00
Mattias Gaertner
9fb9939464 fcl-passrc: resolver: TPasIdentifierScope.GetLocalIdentifiers
git-svn-id: trunk@38159 -
2018-02-08 07:01:45 +00:00
pierre
33188fb5ba Add CROSSGDB macro for cross-cpu IDEs
git-svn-id: trunk@38158 -
2018-02-07 22:29:24 +00:00
pierre
1ff69ee0fa Fix compilation with SUPPORT_REMOTE macro defined
git-svn-id: trunk@38157 -
2018-02-07 22:28:39 +00:00
nickysn
b2d71f6f66 * fix test tasm17.pp for the i8086 huge memory model
git-svn-id: trunk@38156 -
2018-02-07 16:35:24 +00:00
nickysn
0c1062bb45 + extended test tasm17 with 'DW/DD xx+constant' and 'DW/DD OFFSET xx+constant'
git-svn-id: trunk@38155 -
2018-02-07 16:33:03 +00:00
nickysn
70cbb8c326 + added test for 'DW/DD OFFSET xx' on i8086
git-svn-id: trunk@38154 -
2018-02-07 16:20:22 +00:00
nickysn
5f56f6ec11 * always pass a valid constsize to ConcatConstSymbol; this prevents a compiler
internal error on i8086, generated by 'DB xx' or 'DB OFFSET xx'

git-svn-id: trunk@38153 -
2018-02-07 16:17:05 +00:00
nickysn
a792a92cfb * prevent the spurious warning, generated by 'DD xx' and 'DD OFFSET xx' on i8086
git-svn-id: trunk@38152 -
2018-02-07 16:14:05 +00:00
nickysn
11b1da0b9b + generate correct output on i8086 for 'DW xx', 'DW OFFSET xx', 'DD xx' and 'DD OFFSET xx'
git-svn-id: trunk@38151 -
2018-02-07 16:11:20 +00:00
nickysn
3ad3807b6f + accept the 'DB/DW/DD OFFSET xx' syntax
git-svn-id: trunk@38150 -
2018-02-07 16:07:59 +00:00
nickysn
3b1bd8de3f + actually set hasofs to true if 'offset' is encountered in BuildConstSymbolExpression
git-svn-id: trunk@38149 -
2018-02-07 16:03:40 +00:00
nickysn
d591e698ac + added parameter 'hasofs' to ConcatConstSymbol. Will be used to support 'dd xx'
vs 'dd offset xx' being different on i8086.

git-svn-id: trunk@38148 -
2018-02-07 15:23:48 +00:00
nickysn
70038f1c0b + added extra boolean out parameter 'hasofs' to
tx86intreader.BuildConstSymbolExpression; it returns whether the 'OFFSET'
  keyword has been used in the expression. This will be used for disambiguation
  between 'dd xx' and 'dd offset xx', because they should produce different
  results on i8086 (the first generates a far pointer, i.e. the same as
  'dw xx, SEG xx', the second - a 32-bit offset)

git-svn-id: trunk@38147 -
2018-02-07 15:09:54 +00:00
pierre
5ee7682313 Add Makefile targets for IDE targetting different CPUs
git-svn-id: trunk@38146 -
2018-02-06 22:40:11 +00:00
pierre
253cf4abe1 Allow compilation for JVM CPU
git-svn-id: trunk@38145 -
2018-02-06 22:39:17 +00:00
pierre
21a18de003 Use newly added SetExeName TTarget method to specify full name of IDE for cross-CPU
git-svn-id: trunk@38144 -
2018-02-06 22:14:40 +00:00
pierre
eb39402e28 * Handle FPC -oEXENAME option gracefully by adding a new field to TTarget class.
+ Add FExeName field for TTarget class
  + Add public SetExeName to be able to use -o Free Pascal compiler option
    to specify name of produced executable.
  + Add GetBinFileBase method to get base of executable or library name.

git-svn-id: trunk@38143 -
2018-02-06 22:13:17 +00:00
florian
46fe2d486c * forgotten comment
git-svn-id: trunk@38142 -
2018-02-06 21:38:51 +00:00
nickysn
629be9cee1 + add a 'constsize' parameter to ConcatConstSymbol, so it can be used to
distinguish between e.g. 16-bit and 32-bit offsets on i8086

git-svn-id: trunk@38141 -
2018-02-06 16:22:41 +00:00
Mattias Gaertner
f3dbb09e21 pastojs: no warning on $M
git-svn-id: trunk@38140 -
2018-02-06 14:22:14 +00:00
Mattias Gaertner
fc805c4bd2 pas2js: marker for checking writeln statements
git-svn-id: trunk@38139 -
2018-02-06 13:50:18 +00:00
Mattias Gaertner
be71c22a8e pastojs: marker for checking writeln statements
git-svn-id: trunk@38138 -
2018-02-06 13:40:32 +00:00
Mattias Gaertner
0dce970bcf fcl-passrc: marker for checking writeln statements
git-svn-id: trunk@38137 -
2018-02-06 13:40:23 +00:00
Mattias Gaertner
a5f23e2b94 fcl-js: marker for checking writeln statements
git-svn-id: trunk@38136 -
2018-02-06 13:40:10 +00:00
nickysn
d86e5d006c + added test for seg(x) and ofs(x) initialized typed constants in TP mode as well
+ added directive for using the FPC compiler mode in test tsegofs1.pp

git-svn-id: trunk@38135 -
2018-02-06 13:27:36 +00:00
nickysn
2019e622e1 * fixed typed constants, initialized with Ofs(proc) in modes TP and DELPHI as well
git-svn-id: trunk@38134 -
2018-02-06 13:24:15 +00:00
nickysn
e23a13a482 * fixed seg(proc) in tp and delphi modes in all i8086 memory models
git-svn-id: trunk@38133 -
2018-02-06 13:00:08 +00:00
pierre
09995b820e Pass --NOGDBMI=1 to fpmake if NOGDBMI is set
git-svn-id: trunk@38132 -
2018-02-06 12:41:54 +00:00
pierre
1512f9a34c Add NOGDBMI fpmake option to explicitly disable GDBMI support, and add GDBMI_DEFAULT_OSes to default to GDBMI
git-svn-id: trunk@38131 -
2018-02-06 12:40:58 +00:00
Mattias Gaertner
1fa46c5597 fcl-passrc: removed writeln
git-svn-id: trunk@38130 -
2018-02-06 12:25:16 +00:00
Mattias Gaertner
5fd7c0b840 pastojs: started writing module
git-svn-id: trunk@38129 -
2018-02-06 12:16:07 +00:00
Mattias Gaertner
beee21c761 fcl-passrc: unified naming BoolSwitches
git-svn-id: trunk@38128 -
2018-02-06 12:15:35 +00:00
pierre
0cabadca2c Fix i386 compilation error for PIC code by using local stack variable
git-svn-id: trunk@38127 -
2018-02-06 10:17:18 +00:00
pierre
30e4988a4e Disable i386 assembler code if position independent code option is used
git-svn-id: trunk@38126 -
2018-02-06 09:41:40 +00:00