Re: h8300 sim: what is "eightbit" memory ?

"ISHIKAWA,chiaki" <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hi,

Sorry for top-posting, but doesn't this "eightbit mem" refer to area
that is accessible with 8-bit offset?
I think I worked with H8/240H or some such CPU and not sure if H8/300H
has similar architecture.

(And my expperience is 10-year old one, ...)

On 2016/08/17 11:26, Mike Frysinger wrote:
> the h8300 sim has its own implementation for memory handling that i'd
> like to replace with the common sim memory code.  however, it's got a
> weird bit of code it calls "eightbit mem" that makes this not as easy
> as it would otherwise be.  the code has this comment:
> /* These define the size of main memory for the simulator.
>
>    Note the size of main memory for the H8/300H is only 256k.  Keeping it
>    small makes the simulator run much faster and consume less memory.
>
>    The linker knows about the limited size of the simulator's main memory
>    on the H8/300H (via the h8300h.sc linker script).  So if you change
>    H8300H_MSIZE, be sure to fix the linker script too.
>
>    Also note that there's a separate "eightbit" area aside from main
>    memory.  For simplicity, the simulator assumes any data memory reference
>    outside of main memory refers to the eightbit area (in theory, this
>    can only happen when simulating H8/300H programs).  We make no attempt
>    to catch overlapping addresses, wrapped addresses, etc etc.  */
>
> i've read the H8/300 Programming Manual and the H8/300H Software Manual
> and can't find documentation on it.  the closest i can find is the bits
> about the exception vectors, but that sounds like a convention where the
> first 256 bytes of memory are used for a special purpose.  the sim will
> actually allocate a sep memory buffer of 256 bytes and you address it by
> accessing anywhere outside of main memory.  e.g. i would expect code to
> access it like:
> 	uint32_t *data = (void *)0;
> 	data[0] = reset_exception_vector;
> not like the sim expects like:
> 	uint8_t *data = (void *)0x1000000;
> 	data[0] = ...;
>
> the gcc manual doesn't have a lot to say:
> Use this attribute on the H8/300, H8/300H, and H8S to indicate that the
> specified variable should be placed into the eight-bit data section. The
> compiler generates more efficient code for certain operations on data in
> the eight-bit data area. Note the eight-bit data area is limited to 256
> bytes of data.
>
> and the gcc code implies that it's accessed via special addressing:
>    eightbit_data: This variable lives in the 8-bit data area and can
>    be referenced with 8-bit absolute memory addresses.
>
> but the sim doesn't access its eightbit memory based on specific insns,
> it does it purely on the addresses requested.
>
> unfortunately, much of this code was authored by Michael Snyder, so i
> can't ask him :(.  does anyone familiar with the H8/300 have a clue as
> to what's going on with this code ?
> -mike
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.