mirror of
https://github.com/cc65/cc65.git
synced 2024-12-28 06:30:16 +00:00
New --register-space option
git-svn-id: svn://svn.cc65.org/cc65/trunk@1653 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
bf5ae8b663
commit
0348739164
@ -60,9 +60,6 @@
|
||||
|
||||
|
||||
|
||||
/* Maximum register variable size */
|
||||
#define MAX_REG_SPACE 6
|
||||
|
||||
/* Structure that holds all data needed for function activation */
|
||||
struct Function {
|
||||
struct SymEntry* FuncEntry; /* Symbol table entry */
|
||||
@ -98,7 +95,7 @@ static Function* NewFunction (struct SymEntry* Sym)
|
||||
F->Reserved = 0;
|
||||
F->RetLab = GetLocalLabel ();
|
||||
F->TopLevelSP = 0;
|
||||
F->RegOffs = MAX_REG_SPACE;
|
||||
F->RegOffs = RegisterSpace;
|
||||
|
||||
/* Return the new structure */
|
||||
return F;
|
||||
@ -260,7 +257,7 @@ static void F_RestoreRegVars (Function* F)
|
||||
const SymEntry* Sym;
|
||||
|
||||
/* If we don't have register variables in this function, bail out early */
|
||||
if (F->RegOffs == MAX_REG_SPACE) {
|
||||
if (F->RegOffs == RegisterSpace) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1998-2001 Ullrich von Bassewitz */
|
||||
/* (C) 1998-2002 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@cc65.org */
|
||||
@ -52,6 +52,7 @@ unsigned char FavourSize = 1; /* Favour size over speed */
|
||||
unsigned CodeSizeFactor = 100; /* Size factor for generated code */
|
||||
unsigned char InlineStdFuncs = 0; /* Inline some known functions */
|
||||
unsigned char EnableRegVars = 0; /* Enable register variables */
|
||||
unsigned RegisterSpace = 6; /* Space available for register vars */
|
||||
unsigned char AllowRegVarAddr = 0; /* Allow taking addresses of register vars */
|
||||
unsigned char RegVarsToCallStack= 0; /* Save reg variables on call stack */
|
||||
unsigned char StaticLocals = 0; /* Make local variables static */
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1998-2001 Ullrich von Bassewitz */
|
||||
/* (C) 1998-2002 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@cc65.org */
|
||||
@ -53,6 +53,7 @@ extern unsigned char FavourSize; /* Favour size over speed */
|
||||
extern unsigned CodeSizeFactor; /* Size factor for generated code */
|
||||
extern unsigned char InlineStdFuncs; /* Inline some known functions */
|
||||
extern unsigned char EnableRegVars; /* Enable register variables */
|
||||
extern unsigned RegisterSpace; /* Space available for register vars */
|
||||
extern unsigned char AllowRegVarAddr; /* Allow taking addresses of register vars */
|
||||
extern unsigned char RegVarsToCallStack; /* Save reg variables on call stack */
|
||||
extern unsigned char StaticLocals; /* Make local variables static */
|
||||
|
@ -113,6 +113,7 @@ static void Usage (void)
|
||||
" --help\t\tHelp (this text)\n"
|
||||
" --include-dir dir\tSet an include directory search path\n"
|
||||
" --list-opt-steps\tList all optimizer steps and exit\n"
|
||||
" --register-space b\tSet space available for register variables\n"
|
||||
" --register-vars\tEnable register variables\n"
|
||||
" --rodata-name seg\tSet the name of the RODATA segment\n"
|
||||
" --signed-chars\tDefault characters are signed\n"
|
||||
@ -530,7 +531,18 @@ static void OptListOptSteps (const char* Opt attribute ((unused)),
|
||||
|
||||
|
||||
|
||||
static void OptRegisterVars (const char* Opt attribute ((unused)),
|
||||
static void OptRegisterSpace (const char* Opt, const char* Arg)
|
||||
/* Handle the --register-space option */
|
||||
{
|
||||
/* Numeric argument expected */
|
||||
if (sscanf (Arg, "%u", &RegisterSpace) != 1 || RegisterSpace > 256) {
|
||||
AbEnd ("Argument for option %s is invalid", Opt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void OptRegisterVars (const char* Opt attribute ((unused)),
|
||||
const char* Arg attribute ((unused)))
|
||||
/* Handle the --register-vars option */
|
||||
{
|
||||
@ -618,6 +630,7 @@ int main (int argc, char* argv[])
|
||||
{ "--help", 0, OptHelp },
|
||||
{ "--include-dir", 1, OptIncludeDir },
|
||||
{ "--list-opt-steps", 0, OptListOptSteps },
|
||||
{ "--register-space", 1, OptRegisterSpace },
|
||||
{ "--register-vars", 0, OptRegisterVars },
|
||||
{ "--rodata-name", 1, OptRodataName },
|
||||
{ "--signed-chars", 0, OptSignedChars },
|
||||
|
Loading…
Reference in New Issue
Block a user