Commit Graph

40772 Commits

Author SHA1 Message Date
nickysn
511b1f37c1 * write the segment of aitconst_farptr on a separate line to avoid long symbol truncation, due to line length limit; this fixes compilation of sysutils in the medium memory model
git-svn-id: trunk@24879 -
2013-06-12 01:32:18 +00:00
nickysn
70cd05caa8 * fpc_setjmp and fpc_longjmp updated to support far code memory models
git-svn-id: trunk@24878 -
2013-06-11 23:59:30 +00:00
nickysn
0de550c2c9 * use an indirect jmp in fpc_longjmp
git-svn-id: trunk@24877 -
2013-06-11 23:47:30 +00:00
nickysn
07b9019c94 * jmp_buf.pc renamed to .ip and also changed to word
git-svn-id: trunk@24876 -
2013-06-11 22:51:06 +00:00
nickysn
8392c492cc * jmp_buf.bp and .sp changed to word, because pointer will become 32-bit in far data memory models
git-svn-id: trunk@24875 -
2013-06-11 22:47:42 +00:00
nickysn
baa4d39ea3 + apply extra_param_offset to all i8086 asm routines that use nostackframe
git-svn-id: trunk@24874 -
2013-06-11 21:10:47 +00:00
nickysn
5d4ebf0dca + added extra_param_offset constant for accessing parameters in asm routines with nostackframe
git-svn-id: trunk@24873 -
2013-06-11 21:08:43 +00:00
florian
980563d576 * several small errors fixed, float128<->float64 conversion works now
git-svn-id: trunk@24872 -
2013-06-11 21:00:26 +00:00
florian
92477a14b8 o patch by Max Nazholov:
* more C code ported
 * missing exits fixed
 * var-modifier of shortShift128Left fixed
 * some range warnings fixed

git-svn-id: trunk@24871 -
2013-06-11 21:00:23 +00:00
florian
ff3295d8fd * nostackframe is not allowed by newer FPCs for pascal functions/procedure (and was never recommended)
git-svn-id: trunk@24870 -
2013-06-11 20:04:33 +00:00
Károly Balogh
cdf3f3266b implemented FileSetDate, improved FileCreate
git-svn-id: trunk@24869 -
2013-06-11 06:02:28 +00:00
nickysn
bb06899ec7 * clarified the comment for aitconst_farptr
git-svn-id: trunk@24868 -
2013-06-10 21:35:29 +00:00
nickysn
fa9c26f76f + medium memory model added to the compiler help messages
git-svn-id: trunk@24867 -
2013-06-10 21:04:54 +00:00
nickysn
d387182bd6 * when doing a pointer comparison on i8086, don't cast a far pointer to a near one (pchar), but use a far one instead
git-svn-id: trunk@24866 -
2013-06-10 20:53:11 +00:00
nickysn
894d400a7b + added is_farpointer(tdef) and is_hugepointer(tdef) helper functions to defutil
git-svn-id: trunk@24865 -
2013-06-10 20:50:05 +00:00
pierre
aae318403d Fix a int64<->single conversion failure exposed in test/units/softfpu/sfttst.pp
git-svn-id: trunk@24864 -
2013-06-10 13:51:02 +00:00
nickysn
70dbd7f667 * far pointer aware conversion of method pointer to plain procvar
git-svn-id: trunk@24863 -
2013-06-10 09:56:45 +00:00
sergei
562714129f * MIPS: get completely rid of LI macro, generate equivalent CPU instructions instead.
git-svn-id: trunk@24862 -
2013-06-10 02:07:21 +00:00
nickysn
6046edd8f9 + i8086/n8086cnv.pas added to lazarus project
git-svn-id: trunk@24861 -
2013-06-10 01:19:22 +00:00
nickysn
b342588af1 + i8086 specific far proc aware implementation of ttypeconvnode.second_proc_to_procvar
git-svn-id: trunk@24860 -
2013-06-10 01:19:01 +00:00
nickysn
9dbbffba61 + added trefaddr.addr_seg for referencing the segment of a symbol
git-svn-id: trunk@24859 -
2013-06-10 01:16:37 +00:00
nickysn
57e84dc0b4 * set the proper size for far procsyms in tcgloadnode.pass_generate_code
git-svn-id: trunk@24858 -
2013-06-10 01:06:02 +00:00
nickysn
c9096ef806 * far pointer fix in taddrnode.pass_typecheck
git-svn-id: trunk@24857 -
2013-06-09 23:07:30 +00:00
nickysn
b81f0ab50d + implemented tcg8086.a_call_reg_far; very hacky, but still better than doing a near call, when it should be far
git-svn-id: trunk@24856 -
2013-06-09 22:16:40 +00:00
nickysn
62316da236 * a_call_reg moved to a_call_reg_near
git-svn-id: trunk@24855 -
2013-06-09 22:09:39 +00:00
nickysn
e4a1230356 + added support for far pointer constants in the assembly output
git-svn-id: trunk@24854 -
2013-06-09 22:01:04 +00:00
nickysn
604b7c9deb + added cg.a_call_ref_near and a_call_ref_far
git-svn-id: trunk@24853 -
2013-06-09 20:22:47 +00:00
nickysn
10f7f0231e * TExitProcInfo.SaveExit changed to CodePointer
git-svn-id: trunk@24852 -
2013-06-09 20:19:28 +00:00
nickysn
6431ebe7f3 * treat the nil node as equal to near, far and all the special x86 pointer types
git-svn-id: trunk@24851 -
2013-06-09 19:04:03 +00:00
nickysn
2809ed6fb9 * updated tfiledef.setsize to support the size of textrec in the medium memory model
git-svn-id: trunk@24850 -
2013-06-09 18:22:47 +00:00
nickysn
01f8989ebc * textrec updated to use codepointer
git-svn-id: trunk@24849 -
2013-06-09 18:21:21 +00:00
nickysn
0d51ecdd00 * System.ExitProc type changed to CodePointer
git-svn-id: trunk@24848 -
2013-06-09 18:10:45 +00:00
nickysn
435a97059d + enabled the command line option for the medium memory model
git-svn-id: trunk@24847 -
2013-06-09 17:57:42 +00:00
nickysn
b5c032874f * set the po_far flag by default in far code memory models
git-svn-id: trunk@24846 -
2013-06-09 17:54:29 +00:00
nickysn
093b87f50d * far code support for the internal type
git-svn-id: trunk@24845 -
2013-06-09 17:53:54 +00:00
nickysn
bfd65ea550 * use tprocvardef(def).size (which takes into account far code/data) to determine cgsize for procvars in def_cgsize
git-svn-id: trunk@24844 -
2013-06-09 17:51:56 +00:00
nickysn
4a423ecc44 * System.InitProc changed to CodePointer
git-svn-id: trunk@24843 -
2013-06-09 17:49:38 +00:00
nickysn
ad29cab0aa * DispCallByIDProc changed to CodePointer
git-svn-id: trunk@24842 -
2013-06-09 17:32:18 +00:00
nickysn
54c4c8155b + also added PCodePointer and PPCodePointer
git-svn-id: trunk@24841 -
2013-06-09 17:30:03 +00:00
nickysn
9b59809ac3 * TMethod.Code changed to CodePointer
git-svn-id: trunk@24840 -
2013-06-09 17:24:38 +00:00
nickysn
3e1e5cb7e8 + added System.CodePointer - a pointer that is able to hold a procedure address in the current memory model
git-svn-id: trunk@24839 -
2013-06-09 17:23:31 +00:00
nickysn
0e4e329228 + added defines for the i8086 code and data model; ptrint/ptruint made to follow the data pointer size
git-svn-id: trunk@24838 -
2013-06-09 16:06:14 +00:00
nickysn
1029636dfe * far proc fixes in tcgcallnode.pass_generate_code
git-svn-id: trunk@24837 -
2013-06-09 14:21:03 +00:00
sergei
b9bbe8ba67 * tai_const.getcopy: Check that 'sym' is assigned before trying to call its method. Mantis #24574.
git-svn-id: trunk@24836 -
2013-06-09 14:19:09 +00:00
nickysn
b6c979e55f + added tabstractprocdef.address_size which returns the actual address size of the proc, taking into account far procs
git-svn-id: trunk@24835 -
2013-06-09 13:39:13 +00:00
nickysn
3631198b34 + declare the text segment with class=code in the nasm header for far code memory models also
git-svn-id: trunk@24834 -
2013-06-09 13:01:40 +00:00
nickysn
9a6c242f97 + emit proper far calls/jmps for addr_far in the nasm assembly output
git-svn-id: trunk@24833 -
2013-06-09 12:59:44 +00:00
nickysn
f5a9442910 + added the appropriate startup code names for each memory model
git-svn-id: trunk@24832 -
2013-06-09 12:44:03 +00:00
nickysn
3280514d2b * in i8086 far code models, put the code in a section called module_name+'_TEXT', so each unit gets a separate code segment
git-svn-id: trunk@24831 -
2013-06-09 12:26:33 +00:00
nickysn
b74af9fda0 * declare the text segment with class=code on i8086-msdos
git-svn-id: trunk@24830 -
2013-06-09 12:13:52 +00:00