mirror of
https://github.com/cc65/cc65.git
synced 2025-01-12 17:30:50 +00:00
Check for and flag address size modifiers that are invalid for the choosen CPU.
git-svn-id: svn://svn.cc65.org/cc65/trunk@3927 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
9082762519
commit
c94e82f8b2
@ -127,6 +127,11 @@ static unsigned char OptionalAddrSize (void)
|
||||
if (Tok == TOK_COLON) {
|
||||
NextTok ();
|
||||
AddrSize = ParseAddrSize ();
|
||||
if (!ValidAddrSizeForCPU (AddrSize)) {
|
||||
/* Print an error and reset to default */
|
||||
Error ("Invalid address size specification for current CPU");
|
||||
AddrSize = ADDR_SIZE_DEFAULT;
|
||||
}
|
||||
NextTok ();
|
||||
}
|
||||
return AddrSize;
|
||||
|
@ -6,8 +6,8 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 2003-2005, Ullrich von Bassewitz */
|
||||
/* Römerstrasse 52 */
|
||||
/* (C) 2003-2009, Ullrich von Bassewitz */
|
||||
/* Roemerstrasse 52 */
|
||||
/* D-70794 Filderstadt */
|
||||
/* EMail: uz@cc65.org */
|
||||
/* */
|
||||
@ -34,6 +34,8 @@
|
||||
|
||||
|
||||
/* common */
|
||||
#include "addrsize.h"
|
||||
#include "check.h"
|
||||
#include "cpu.h"
|
||||
#include "strutil.h"
|
||||
|
||||
@ -82,6 +84,37 @@ const unsigned CPUIsets[CPU_COUNT] = {
|
||||
|
||||
|
||||
|
||||
int ValidAddrSizeForCPU (unsigned char AddrSize)
|
||||
/* Check if the given address size is valid for the current CPU */
|
||||
{
|
||||
switch (AddrSize) {
|
||||
case ADDR_SIZE_DEFAULT:
|
||||
/* Always supported */
|
||||
return 1;
|
||||
|
||||
case ADDR_SIZE_ZP:
|
||||
/* Not supported by None and Sweet16 */
|
||||
return (CPU != CPU_NONE && CPU != CPU_SWEET16);
|
||||
|
||||
case ADDR_SIZE_ABS:
|
||||
/* Not supported by None */
|
||||
return (CPU != CPU_NONE);
|
||||
|
||||
case ADDR_SIZE_FAR:
|
||||
/* Only supported by 65816 */
|
||||
return (CPU == CPU_65816);
|
||||
|
||||
case ADDR_SIZE_LONG:
|
||||
/* Not supported by any CPU */
|
||||
return 0;
|
||||
|
||||
default:
|
||||
FAIL ("Invalid address size");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
cpu_t FindCPU (const char* Name)
|
||||
/* Find a CPU by name and return the target id. CPU_UNKNOWN is returned if
|
||||
* the given name is no valid target.
|
||||
|
@ -6,8 +6,8 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 2003-2005, Ullrich von Bassewitz */
|
||||
/* Römerstrasse 52 */
|
||||
/* (C) 2003-2009, Ullrich von Bassewitz */
|
||||
/* Roemerstrasse 52 */
|
||||
/* D-70794 Filderstadt */
|
||||
/* EMail: uz@cc65.org */
|
||||
/* */
|
||||
@ -89,6 +89,9 @@ extern const unsigned CPUIsets[CPU_COUNT];
|
||||
|
||||
|
||||
|
||||
int ValidAddrSizeForCPU (unsigned char AddrSize);
|
||||
/* Check if the given address size is valid for the current CPU */
|
||||
|
||||
cpu_t FindCPU (const char* Name);
|
||||
/* Find a CPU by name and return the target id. CPU_UNKNOWN is returned if
|
||||
* the given name is no valid target.
|
||||
|
Loading…
x
Reference in New Issue
Block a user