nasm_cpu_name const array, which is used by the asd_cpu directive as well.
+ also enable writing this directive on i386 and x86_64 as well.
git-svn-id: trunk@33140 -
CPU target for inline assembler blocks. In addition to the different CPUs
(as listed under 'Supported CPU instruction sets:' in the output of 'fpc -i'),
it also supports the special values 'ANY' and 'CURRENT'. 'ANY' means no
restrictions (i.e. all instructions are available). 'CURRENT' means the
current CPU target (as specified with the '-Cp' command line option). For
backward compatibility, the default value is 'ANY' for all CPU targets, except
i8086, where it defaults to 'CURRENT'.
This directive requires support for the new asd_cpu directive in the assembler
writer. This is currently implemented only for NASM, but will be supported in
some of the other assembler writers as well (incl. the x86 internal assembler
writer).
git-svn-id: trunk@33138 -
directive, because NASM still doesn't support anything newer than 'PRESCOTT'
for its CPU directive, and 'IA64' is considered (internally by NASM) to be the
highest CPU level.
git-svn-id: trunk@33137 -
asm writer), when used with a cpu_none parameter, indicate no restrictions for
the CPU type. Under NASM, this is achieved by specifying 'IA64' as the
CPU type, since that's the highest CPU, supported by NASM's 'CPU' directive.
git-svn-id: trunk@33136 -
compiler's internal assembly representation. It is not yet generated by the
compiler and is only implemented properly in the NASM writer (but will
eventually be implemented in the other assembler writers as well, including
the internal assembler). In the future, it is intended to allow:
1) catching instructions, generated by the compiler and not supported by the
target CPU, due to a bug in the code generator
2) allowing a different instruction set to be used in inline asm blocks (I'm
planning a new directive for that - {$asmcpu XXX}), because the code
generator will be able to switch target CPU in the middle of the asm output
stream
git-svn-id: trunk@33121 -
* Treat numerical expressions in operands as constants, not as references by default. A reference cannot be represented by number alone on MIPS.
git-svn-id: trunk@33116 -
+ new stream class TCRangeStream that represents a substream of another stream while being also extendable
........
Extend tentryfile so that it can be opened from a stream in addition to a file
entfile.pas, tentryfile:
+ new method openstream() to open a readable tentryfile based on a stream
+ new method createstream() to open a writeable tentryfile based on a stream
* adjust openfile() to use openstream()
* adjust createfile() to use createstream()
........
A few extensions for tentryfile needed for package files
entfile.pas, tentryfile:
+ new property position to retrieve/control the position of the underlying stream (works also with tempclose()/tempopen())
+ new method substream() to retrieve a stream that goes from the specified offset with the specified length (-1 create a stream that is extendable, aka for writing)
+ new property stream to get the underlying stream directly; be careful when using this!
........
Extend tppumodule so that it can be opened from a stream as well.
fppu.pas, tppumodule:
* rename openppu() to openppufile()
+ new method openppustream() to open a module based on a stream
+ put the common part of openppufile() and openppustream() into a new method openppu()
........
Fix compilation.
fppu.pas, tppumodule:
* openppu: add parameter ppufiletime for printing the time of the file (only if filetime is not -1)
* openppufile: pass the retrieve time of the PPU to openppu()
* openppustream: pass -1 to openppu()
........
git-svn-id: trunk@33109 -
win/sysosh.inc, TEntryInformationOS:
+ new field SysInstance that will hold the address to the main program's SysInstance variable
win32/system.pp:
* rename SysInstance to FPCSysInstance and make it a PLongInt
* OsSetupEntryInformation: setup FPCSysInstance
* adjust initialization of SysInstance to use FPCSysInstance instead
win32/sysinit.inc:
* SysInstance is no longer an external
* initialize the OS.SysInstance field of EntryInformation
win64/system.pp:
* add a FPCSysInstance that's a pointer to SysInstance
win/winres.inc:
* SysInstance is now a pointer and has the same name on both Win32 and Win64
git-svn-id: trunk@33107 -
ncgrtti.pas, TRTTIWriter.write_rtti_data.objectdef_rtti.objectdef_rtti_interface_full:
* only set the ifHasStrGUID flag for Corba interfaces and if the IIDStr is not '' (which it is by default)
* only write the IIDStr for Corba interfaces
git-svn-id: trunk@33105 -