From e9bd1d42b17314cee09c77a1f12efaf930a9679e Mon Sep 17 00:00:00 2001 From: cuz Date: Mon, 24 Nov 2003 18:35:29 +0000 Subject: [PATCH] New module git-svn-id: svn://svn.cc65.org/cc65/trunk@2682 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/common/make/gcc.mak | 1 + src/common/make/watcom.mak | 1 + src/common/mmodel.c | 84 ++++++++++++++++++++++++++++++++++++++ src/common/mmodel.h | 80 ++++++++++++++++++++++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 src/common/mmodel.c create mode 100644 src/common/mmodel.h diff --git a/src/common/make/gcc.mak b/src/common/make/gcc.mak index 2bf80901a..8763b8249 100644 --- a/src/common/make/gcc.mak +++ b/src/common/make/gcc.mak @@ -25,6 +25,7 @@ OBJS = abend.o \ hashstr.o \ hashtab.o \ matchpat.o \ + mmodel.o \ print.o \ searchpath.o \ segdefs.o \ diff --git a/src/common/make/watcom.mak b/src/common/make/watcom.mak index d33082cc8..bf27af1e8 100644 --- a/src/common/make/watcom.mak +++ b/src/common/make/watcom.mak @@ -70,6 +70,7 @@ OBJS = abend.obj \ hashstr.obj \ hashtab.obj \ matchpat.obj \ + mmodel.obj \ print.obj \ searchpath.obj \ segdefs.obj \ diff --git a/src/common/mmodel.c b/src/common/mmodel.c new file mode 100644 index 000000000..d3187ce00 --- /dev/null +++ b/src/common/mmodel.c @@ -0,0 +1,84 @@ +/*****************************************************************************/ +/* */ +/* mmodel.c */ +/* */ +/* Memory model definitions */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#include + +/* common */ +#include "mmodel.h" + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Memory model in use */ +mmodel_t MemoryModel = MMODEL_UNKNOWN; + +/* Table with memory model names */ +static const char* MemoryModelNames[MMODEL_COUNT] = { + "near", + "far", + "huge", +}; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +mmodel_t FindMemoryModel (const char* Name) +/* Find a memory model by name. Return MMODEL_UNKNOWN for an unknown name. */ +{ + unsigned I; + + /* Check all CPU names */ + for (I = 0; I < MMODEL_COUNT; ++I) { + if (strcmp (MemoryModelNames[I], Name) == 0) { + return (mmodel_t)I; + } + } + + /* Not found */ + return MMODEL_UNKNOWN; +} + + + diff --git a/src/common/mmodel.h b/src/common/mmodel.h new file mode 100644 index 000000000..fc66c47f9 --- /dev/null +++ b/src/common/mmodel.h @@ -0,0 +1,80 @@ +/*****************************************************************************/ +/* */ +/* mmodel.h */ +/* */ +/* Memory model definitions */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef MMODEL_H +#define MMODEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Memory models */ +typedef enum { + MMODEL_UNKNOWN = -1, + MMODEL_NEAR, /* Code: near, data: near */ + MMODEL_FAR, /* Code: far, data: near */ + MMODEL_HUGE, /* Code: far, data: far */ + MMODEL_COUNT /* Number of memory models */ +} mmodel_t; + +/* Memory model in use */ +extern mmodel_t MemoryModel; + + + + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +mmodel_t FindMemoryModel (const char* Name); +/* Find a memory model by name. Return MMODEL_UNKNOWN for an unknown name. */ + + + +/* End of mmodel.h */ + +#endif + + +