corrected handling of the highest_valid_address
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4974
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2007-12-01 Borut Razem <borut.razem AT siol.net>
+
+ * sim/ucsim/cmd.src/cmdmem.cc, sim/ucsim/cmd.src/mem.cc:
+ corrected handling of the highest_valid_address
+
2007-11-17 Raphael Neider <rneider AT web.de>
* src/pic/main.c (_asmCmd): include debug arguments (-g as $3)
2007-11-17 Raphael Neider <rneider AT web.de>
* src/pic/main.c (_asmCmd): include debug arguments (-g as $3)
* Simulator of microcontrollers (cmd.src/cmdmem.cc)
*
* Copyright (C) 2001,01 Drotos Daniel, Talker Bt.
* Simulator of microcontrollers (cmd.src/cmdmem.cc)
*
* Copyright (C) 2001,01 Drotos Daniel, Talker Bt.
* To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
*
*/
* To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
*
*/
cmdline->param(4) };
class cl_memory *as= 0, *chip= 0;
t_addr as_begin= 0, as_end= 0, chip_begin= 0;
cmdline->param(4) };
class cl_memory *as= 0, *chip= 0;
t_addr as_begin= 0, as_end= 0, chip_begin= 0;
if (cmdline->syntax_match(uc, MEMORY MEMORY)) {
as= params[0]->value.memory.memory;
as_end= as->highest_valid_address();
if (cmdline->syntax_match(uc, MEMORY MEMORY)) {
as= params[0]->value.memory.memory;
as_end= as->highest_valid_address();
else if (chip_begin >= chip->get_size())
con->dd_printf("Wrong chip area specification\n");
else if (as_begin < as->start_address ||
else if (chip_begin >= chip->get_size())
con->dd_printf("Wrong chip area specification\n");
else if (as_begin < as->start_address ||
- as_end >= as->highest_valid_address())
+ as_end > as->highest_valid_address())
con->dd_printf("Specified area is out of address space\n");
else if (as_end-as_begin > chip->get_size()-chip_begin)
con->dd_printf("Specified area is out of chip size\n");
con->dd_printf("Specified area is out of address space\n");
else if (as_end-as_begin > chip->get_size()-chip_begin)
con->dd_printf("Specified area is out of chip size\n");
* Simulator of microcontrollers (mem.cc)
*
* Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
* Simulator of microcontrollers (mem.cc)
*
* Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
* To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
*
*/
* To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
*
*/
This file is part of microcontroller simulator: ucsim.
This file is part of microcontroller simulator: ucsim.
UCSIM is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
UCSIM is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
UCSIM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
UCSIM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with UCSIM; see the file COPYING. If not, write to the Free
You should have received a copy of the GNU General Public License
along with UCSIM; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
/*@1@*/
02111-1307, USA.
*/
/*@1@*/
if (stop > hva)
stop= hva;
while ((start <= stop) &&
if (stop > hva)
stop= hva;
while ((start <= stop) &&
{
con->dd_printf(addr_format, start); con->dd_printf(" ");
for (i= 0;
(i < bpl) &&
{
con->dd_printf(addr_format, start); con->dd_printf(" ");
for (i= 0;
(i < bpl) &&
(start+i <= stop);
i++)
{
(start+i <= stop);
i++)
{
i++;
}
for (i= 0; (i < bpl) &&
i++;
}
for (i= 0; (i < bpl) &&
(start+i <= stop);
i++)
{
(start+i <= stop);
i++)
{
if (a+len > size)
return(DD_FALSE);
if (a+len > size)
return(DD_FALSE);
if (next_operator)
next_operator->read();
if (next_operator)
next_operator->read();
return(operators->read(skip));
return(*data);
}
return(operators->read(skip));
return(*data);
}
-cl_memory_cell::get(void)
+cl_memory_cell::get(void)
t_mem
cl_address_space::read(t_addr addr)
{
t_mem
cl_address_space::read(t_addr addr)
{
default:
//e= '.';
op= 0;
default:
//e= '.';
op= 0;
}
if (op)
cell->append_operator(op);
}
if (op)
cell->append_operator(op);
cl_address_decoder::shrink_out_of(t_addr begin, t_addr end)
{
t_addr a= as_begin;
cl_address_decoder::shrink_out_of(t_addr begin, t_addr end)
{
t_addr a= as_begin;
if (!address_space)
return(DD_TRUE);
if (begin > a)
if (!address_space)
return(DD_TRUE);
if (begin > a)
--- /dev/null
+/* bug-1817005.c
+ */
+
+#include <testfwk.h>
+
+/* this is an assemble time test, so it doesn't have to be executed */
+
+int
+function_with_really_long_name(void)
+{
+ return 0;
+}
+
+/* dummy test function */
+
+void
+testDummy(void)
+{
+}
+++ /dev/null
-/* bug-1817005.c
- */
-
-#include <testfwk.h>
-
-/* this is an assemble time test, so it doesn't have to be executed */
-
-int
-function_with_really_long_name(void)
-{
- return 0;
-}
-
-/* dummy test function */
-
-void
-testDummy(void)
-{
-}