mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 09:39:09 +02:00
+ $ASMMODE
This commit is contained in:
parent
a9e0837f1e
commit
4fc1780fe4
@ -32,7 +32,7 @@ Unit aopt386;
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
cobjects,globals,symtable,strings,verbose,hcodegen
|
cobjects,globals,systems,symtable,strings,verbose,hcodegen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,i386
|
,i386
|
||||||
,cgi386
|
,cgi386
|
||||||
@ -1631,7 +1631,10 @@ end;
|
|||||||
End.
|
End.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.13 1998-05-24 18:42:37 jonas
|
Revision 1.14 1998-05-30 14:31:02 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.13 1998/05/24 18:42:37 jonas
|
||||||
* final bugfilx for mov optimizes, remake3 with optimizations works again!
|
* final bugfilx for mov optimizes, remake3 with optimizations works again!
|
||||||
|
|
||||||
Revision 1.12 1998/05/24 15:20:59 jonas
|
Revision 1.12 1998/05/24 15:20:59 jonas
|
||||||
|
@ -60,7 +60,7 @@ begin
|
|||||||
'x' : initswitches:=initswitches+[cs_optimize,cs_maxoptimieren];
|
'x' : initswitches:=initswitches+[cs_optimize,cs_maxoptimieren];
|
||||||
'z' : initswitches:=initswitches+[cs_optimize,cs_uncertainopts];
|
'z' : initswitches:=initswitches+[cs_optimize,cs_uncertainopts];
|
||||||
'2' : initoptprocessor:=pentium2;
|
'2' : initoptprocessor:=pentium2;
|
||||||
'3' : initoptprocessor:=globals.i386;
|
'3' : initoptprocessor:=systems.i386;
|
||||||
'4' : initoptprocessor:=i486;
|
'4' : initoptprocessor:=i486;
|
||||||
'5' : initoptprocessor:=pentium;
|
'5' : initoptprocessor:=pentium;
|
||||||
'6' : initoptprocessor:=pentiumpro;
|
'6' : initoptprocessor:=pentiumpro;
|
||||||
@ -89,7 +89,10 @@ end;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.6 1998-05-28 17:26:48 peter
|
Revision 1.7 1998-05-30 14:31:05 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.6 1998/05/28 17:26:48 peter
|
||||||
* fixed -R switch, it didn't work after my previous akt/init patch
|
* fixed -R switch, it didn't work after my previous akt/init patch
|
||||||
* fixed bugs 110,130,136
|
* fixed bugs 110,130,136
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ unit pstatmnt;
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
cobjects,scanner,globals,symtable,aasm,pass_1,
|
cobjects,scanner,globals,symtable,aasm,pass_1,
|
||||||
types,hcodegen,files,verbose
|
types,hcodegen,files,verbose,systems
|
||||||
{$ifdef NEWPPU}
|
{$ifdef NEWPPU}
|
||||||
,ppu
|
,ppu
|
||||||
{$endif}
|
{$endif}
|
||||||
@ -1121,7 +1121,10 @@ unit pstatmnt;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.14 1998-05-29 09:58:14 pierre
|
Revision 1.15 1998-05-30 14:31:06 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.14 1998/05/29 09:58:14 pierre
|
||||||
* OPR_REGISTER for 1 arg was missing in ratti386.pas
|
* OPR_REGISTER for 1 arg was missing in ratti386.pas
|
||||||
(probably a merging problem)
|
(probably a merging problem)
|
||||||
* errors at start of line were lost
|
* errors at start of line were lost
|
||||||
|
@ -82,7 +82,7 @@ var
|
|||||||
Implementation
|
Implementation
|
||||||
|
|
||||||
Uses
|
Uses
|
||||||
files,aasm,globals,AsmUtils,strings,hcodegen,scanner,
|
systems,files,aasm,globals,AsmUtils,strings,hcodegen,scanner,
|
||||||
cobjects,verbose,types;
|
cobjects,verbose,types;
|
||||||
|
|
||||||
|
|
||||||
@ -1345,7 +1345,7 @@ var
|
|||||||
{ this makes cpu.pp uncompilable, but i think this code should be }
|
{ this makes cpu.pp uncompilable, but i think this code should be }
|
||||||
{ inserted in the system unit anyways. }
|
{ inserted in the system unit anyways. }
|
||||||
if (instruc >= lastop_in_table) and
|
if (instruc >= lastop_in_table) and
|
||||||
((cs_compilesystem in aktswitches) or (aktoptprocessor > globals.i386)) then
|
((cs_compilesystem in aktswitches) or (aktoptprocessor > systems.i386)) then
|
||||||
begin
|
begin
|
||||||
Message(assem_w_opcode_not_in_table);
|
Message(assem_w_opcode_not_in_table);
|
||||||
fits:=true;
|
fits:=true;
|
||||||
@ -3369,7 +3369,10 @@ Begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.7 1998-05-28 16:32:05 carl
|
Revision 1.8 1998-05-30 14:31:07 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.7 1998/05/28 16:32:05 carl
|
||||||
* bugfix with operands main branch version (patched manually)
|
* bugfix with operands main branch version (patched manually)
|
||||||
|
|
||||||
Revision 1.6 1998/05/23 01:21:26 peter
|
Revision 1.6 1998/05/23 01:21:26 peter
|
||||||
|
@ -75,7 +75,7 @@ var
|
|||||||
Implementation
|
Implementation
|
||||||
|
|
||||||
Uses
|
Uses
|
||||||
files,aasm,globals,AsmUtils,strings,hcodegen,scanner,
|
files,aasm,globals,AsmUtils,strings,hcodegen,scanner,systems,
|
||||||
cobjects,verbose,symtable,types;
|
cobjects,verbose,symtable,types;
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -1536,7 +1536,7 @@ const
|
|||||||
{ the att version only if the processor > i386 or we are compiling }
|
{ the att version only if the processor > i386 or we are compiling }
|
||||||
{ the system unit then this will be allowed... }
|
{ the system unit then this will be allowed... }
|
||||||
if (instruc >= lastop_in_table) and
|
if (instruc >= lastop_in_table) and
|
||||||
((cs_compilesystem in aktswitches) or (aktoptprocessor > globals.i386)) then
|
((cs_compilesystem in aktswitches) or (aktoptprocessor >systems.i386)) then
|
||||||
begin
|
begin
|
||||||
Message1(assem_w_opcode_not_in_table,att_op2str[instruc]);
|
Message1(assem_w_opcode_not_in_table,att_op2str[instruc]);
|
||||||
fits:=true;
|
fits:=true;
|
||||||
@ -3683,7 +3683,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.9 1998-05-29 09:58:16 pierre
|
Revision 1.10 1998-05-30 14:31:08 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.9 1998/05/29 09:58:16 pierre
|
||||||
* OPR_REGISTER for 1 arg was missing in ratti386.pas
|
* OPR_REGISTER for 1 arg was missing in ratti386.pas
|
||||||
(probably a merging problem)
|
(probably a merging problem)
|
||||||
* errors at start of line were lost
|
* errors at start of line were lost
|
||||||
|
@ -26,7 +26,7 @@ type
|
|||||||
directivestr=string[directivelen];
|
directivestr=string[directivelen];
|
||||||
tdirectivetoken=(
|
tdirectivetoken=(
|
||||||
_DIR_NONE,
|
_DIR_NONE,
|
||||||
_DIR_ALIGN,
|
_DIR_ALIGN,_DIR_ASMMODE,
|
||||||
_DIR_D,_DIR_DEFINE,_DIR_DESCRIPTION,
|
_DIR_D,_DIR_DEFINE,_DIR_DESCRIPTION,
|
||||||
_DIR_ELSE,_DIR_ENDIF,_DIR_ERROR,
|
_DIR_ELSE,_DIR_ENDIF,_DIR_ERROR,
|
||||||
_DIR_FATAL,
|
_DIR_FATAL,
|
||||||
@ -46,7 +46,7 @@ const
|
|||||||
lastdirective=_DIR_WARNING;
|
lastdirective=_DIR_WARNING;
|
||||||
directive:array[tdirectivetoken] of directivestr=(
|
directive:array[tdirectivetoken] of directivestr=(
|
||||||
'',
|
'',
|
||||||
'ALIGN',
|
'ALIGN','ASMMODE',
|
||||||
'D','DEFINE','DESCRIPTION',
|
'D','DEFINE','DESCRIPTION',
|
||||||
'ELSE','ENDIF','ERROR',
|
'ELSE','ENDIF','ERROR',
|
||||||
'FATAL',
|
'FATAL',
|
||||||
@ -697,6 +697,19 @@ const
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure dir_asmmode(t:tdirectivetoken);
|
procedure dir_asmmode(t:tdirectivetoken);
|
||||||
|
var
|
||||||
|
s : string;
|
||||||
|
begin
|
||||||
|
skipspace;
|
||||||
|
s:=readid;
|
||||||
|
if s='DEFAULT' then
|
||||||
|
aktasmmode:=initasmmode
|
||||||
|
else
|
||||||
|
if not set_string_asmmode(s,aktasmmode) then
|
||||||
|
Comment(V_Warning,'Unsupported asm mode specified '+s);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure dir_oldasmmode(t:tdirectivetoken);
|
||||||
begin
|
begin
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
case t of
|
case t of
|
||||||
@ -730,6 +743,7 @@ const
|
|||||||
directiveproc:array[tdirectivetoken] of tdirectiveproc=(
|
directiveproc:array[tdirectivetoken] of tdirectiveproc=(
|
||||||
{_DIR_NONE} nil,
|
{_DIR_NONE} nil,
|
||||||
{_DIR_ALIGN} dir_delphiswitch,
|
{_DIR_ALIGN} dir_delphiswitch,
|
||||||
|
{_DIR_ASMMODE} dir_asmmode,
|
||||||
{_DIR_D} dir_description,
|
{_DIR_D} dir_description,
|
||||||
{_DIR_DEFINE} dir_define,
|
{_DIR_DEFINE} dir_define,
|
||||||
{_DIR_DESCRIPTION} dir_description,
|
{_DIR_DESCRIPTION} dir_description,
|
||||||
@ -738,9 +752,9 @@ const
|
|||||||
{_DIR_ERROR} dir_message,
|
{_DIR_ERROR} dir_message,
|
||||||
{_DIR_FATAL} dir_message,
|
{_DIR_FATAL} dir_message,
|
||||||
{_DIR_I} dir_include,
|
{_DIR_I} dir_include,
|
||||||
{_DIR_I386_ATT} dir_asmmode,
|
{_DIR_I386_ATT} dir_oldasmmode,
|
||||||
{_DIR_I386_DIRECT} dir_asmmode,
|
{_DIR_I386_DIRECT} dir_oldasmmode,
|
||||||
{_DIR_I386_INTEL} dir_asmmode,
|
{_DIR_I386_INTEL} dir_oldasmmode,
|
||||||
{_DIR_IOCHECKS} dir_delphiswitch,
|
{_DIR_IOCHECKS} dir_delphiswitch,
|
||||||
{_DIR_IF} dir_conditional,
|
{_DIR_IF} dir_conditional,
|
||||||
{_DIR_IFDEF} dir_conditional,
|
{_DIR_IFDEF} dir_conditional,
|
||||||
@ -816,7 +830,10 @@ const
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.9 1998-05-23 01:21:28 peter
|
Revision 1.10 1998-05-30 14:31:10 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.9 1998/05/23 01:21:28 peter
|
||||||
+ aktasmmode, aktoptprocessor, aktoutputformat
|
+ aktasmmode, aktoptprocessor, aktoutputformat
|
||||||
+ smartlink per module $SMARTLINK-/+ (like MMX) and moved to aktswitches
|
+ smartlink per module $SMARTLINK-/+ (like MMX) and moved to aktswitches
|
||||||
+ $LIBNAME to set the library name where the unit will be put in
|
+ $LIBNAME to set the library name where the unit will be put in
|
||||||
|
@ -26,6 +26,27 @@ unit systems;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
type
|
type
|
||||||
|
tendian = (endian_little,en_big_endian);
|
||||||
|
|
||||||
|
tprocessors = (
|
||||||
|
{$ifdef i386}
|
||||||
|
i386,i486,pentium,pentiumpro,cx6x86,pentium2,amdk6
|
||||||
|
{$endif}
|
||||||
|
{$ifdef m68k}
|
||||||
|
MC68000,MC68020
|
||||||
|
{$endif}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
tasmmode = (
|
||||||
|
{$ifdef i386}
|
||||||
|
I386_ATT,I386_INTEL,I386_DIRECT
|
||||||
|
{$endif}
|
||||||
|
{$ifdef m68k}
|
||||||
|
M68K_MOT
|
||||||
|
{$endif}
|
||||||
|
);
|
||||||
|
|
||||||
ttarget = (target_GO32V1,target_GO32V2,target_LINUX,target_OS2,
|
ttarget = (target_GO32V1,target_GO32V2,target_LINUX,target_OS2,
|
||||||
target_WIN32,target_Amiga,target_Atari,target_Mac68k);
|
target_WIN32,target_Amiga,target_Atari,target_Mac68k);
|
||||||
|
|
||||||
@ -49,7 +70,6 @@ unit systems;
|
|||||||
{$endif}
|
{$endif}
|
||||||
);
|
);
|
||||||
|
|
||||||
tendian = (endian_little,en_big_endian);
|
|
||||||
|
|
||||||
tosinfo = record
|
tosinfo = record
|
||||||
name : string[30];
|
name : string[30];
|
||||||
@ -106,6 +126,10 @@ unit systems;
|
|||||||
assem : tasm;
|
assem : tasm;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
tasmmodeinfo=record
|
||||||
|
id : tasmmode;
|
||||||
|
idtxt : string[8];
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
target_info : ttargetinfo;
|
target_info : ttargetinfo;
|
||||||
@ -116,7 +140,7 @@ unit systems;
|
|||||||
|
|
||||||
function set_string_target(const s : string) : boolean;
|
function set_string_target(const s : string) : boolean;
|
||||||
function set_string_asm(const s : string) : boolean;
|
function set_string_asm(const s : string) : boolean;
|
||||||
|
function set_string_asmmode(const s:string;var t:tasmmode):boolean;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -545,6 +569,31 @@ implementation
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
{****************************************************************************
|
||||||
|
AsmModeInfo
|
||||||
|
****************************************************************************}
|
||||||
|
asmmodeinfos : array[tasmmode] of tasmmodeinfo = (
|
||||||
|
{$ifdef i386}
|
||||||
|
(
|
||||||
|
id : I386_DIRECT;
|
||||||
|
idtxt : 'DIRECT';
|
||||||
|
),
|
||||||
|
(
|
||||||
|
id : I386_INTEL;
|
||||||
|
idtxt : 'INTEL';
|
||||||
|
),
|
||||||
|
(
|
||||||
|
id : I386_ATT;
|
||||||
|
idtxt : 'ATT'
|
||||||
|
)
|
||||||
|
{$endif}
|
||||||
|
{$ifdef m68k}
|
||||||
|
(
|
||||||
|
id : M68K_MOT;
|
||||||
|
idtxt : 'MOT';
|
||||||
|
)
|
||||||
|
{$endif}
|
||||||
|
);
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
Helpers
|
Helpers
|
||||||
@ -591,6 +640,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function set_string_asmmode(const s:string;var t:tasmmode):boolean;
|
||||||
|
var
|
||||||
|
i : longint;
|
||||||
|
begin
|
||||||
|
set_string_asmmode:=false;
|
||||||
|
for i:=0 to (sizeof(asmmodeinfos) div sizeof(tasmmodeinfo))-1 do
|
||||||
|
if asmmodeinfos[tasmmode(i)].idtxt=s then
|
||||||
|
begin
|
||||||
|
t:=asmmodeinfos[tasmmode(i)].id;
|
||||||
|
set_string_asmmode:=true;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
Initialization of default target
|
Initialization of default target
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -637,7 +700,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.14 1998-05-29 13:24:45 peter
|
Revision 1.15 1998-05-30 14:31:11 peter
|
||||||
|
+ $ASMMODE
|
||||||
|
|
||||||
|
Revision 1.14 1998/05/29 13:24:45 peter
|
||||||
+ asw assembler
|
+ asw assembler
|
||||||
|
|
||||||
Revision 1.13 1998/05/27 00:20:33 peter
|
Revision 1.13 1998/05/27 00:20:33 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user