information. Only enabled on i8086 (for now). Does not do much yet, but
hopefully, soon it'll start emitting line number information for i8086-msdos
that is usable by DOS debuggers.
git-svn-id: trunk@39006 -
modify the SI and DI registers. For 'register', this makes it compatible with
Borland C++'s __fastcall calling convention, while 'cdecl' becomes compatible
with Borland C, Microsoft C and Watcom C.
git-svn-id: trunk@38824 -
so that they can still be freed after the reference has been changed
(e.g. in case of array indexing or record field accesses) (mantis #33628)
git-svn-id: trunk@38814 -
tcpuparamanager, very similar to the existing get_volatile_registers_XXX. The
new methods are called get_saved_registers_XXX, where XXX is the register
type ("int", "address", "fpu" or "mm")
git-svn-id: trunk@38794 -
tcg8086.a_load_const_cgpara. This fixes passing const longint parameters in
dx:ax when using the register calling convention on i8086.
git-svn-id: trunk@38785 -
on i8086. This is compatible with Borland C++ 3.1's _fastcall. Note that
passing parameters in multiple registers is not yet implemented, so using this
will cause internal errors, but these will be fixed later (and the 'register'
calling convention was never officially supported on i8086).
git-svn-id: trunk@38784 -
models. Even though, they generate less efficient code, they are useful when
interacting with external APIs (e.g. declaring callbacks for the Win16 API).
git-svn-id: trunk@38726 -
o The @ and Addr() operators in TP or Delphi mode can now be applied to both
near and far procedures and they always produce a CodePointer, regardless of
the call model of the procedure.
o Ofs() and Seg() can now also be applied to both near and far procedures.
o The @ and Addr() operators in non-TP/Delphi modes, as well as the procedure
name itself in TP/Delphi modes now can be applied to both near and far
procedures and produce a near or a far procvar.
git-svn-id: trunk@38691 -
procvars can be declared near or far. Methodpointers/nested proc vars, etc
must still follow the default calling model of the current memory model. Note
that this feature isn't TP7 compatible (TP7 doesn't allow near procvars at
all), but is common to 16-bit C compilers and is quite useful for calling
external code (e.g. for far calling BIOS or some other real mode API entry
points from any memory model, etc.)
git-svn-id: trunk@38595 -
determine whether to issue a near or a far call in ti8086callnode.do_call_ref.
This will allow adding support for near and far procvars in any memory model.
git-svn-id: trunk@38594 -
sometimes produce a far pointer constant (depending on the memory model and
the type of 'x'), which would accidentally work for single constants, but will
fail for consts, which are a part of a record or an array. This fixes e.g.
const c:array[0..1] of word=(Ofs(a),Ofs(b)); in all memory models
git-svn-id: trunk@38121 -