Instructions counter: 94
Clock cycles counter: 484
Last instruction: call 0xAC

You may install the software mentioned below, if you have windows.
I tried it in an other simulator, with the similar problem.


On Fri, Jun 6, 2008 at 4:36 PM, Raphael Neider <> wrote:

Get Started wrote:
> I tried to simulate (PICSim IDE, Oshonsoft) the hex file, but I got
> "Hardware stack overflow"

There was a similar report recently stating the same problem. Can you
track it down more precisely? Can you single-step through the program to
identify the causing instruction? I do not have the software, so I
cannot try myself.

Alternatively you can try to replace the startup code by defining a
function as follows:

void _sdcc_gsinit_startup (void) {
    pagesel _main
    goto    _main

WARNING: This will leave all global and/or static variables undefined,
even if they are initialized in C!

I suspect a simulator bug on reading from flash: The initialization code
(like normal code as well) reads from code memory by calling a code
fragment that sets the PCLATH and PCL registers to the address to be
read, executing the the RETLW <val> instruction there and thus returning
to the caller of the code fragment. Maybe the simulator also partly
executes the following instruction, which is likely to be a RETLW <val2>
instruction as well, popping another return value from the stack?!?

For the record: gpsim happily simulates the code.

> #include "pic16f84.h"
> void main()
> {
>     TRISB = 0;
>     for (;;)
>     {
>         PORTB = 0;
>         PORTB = 1;
>     }
> }

Hope that helps,

Check out the new Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
Sdcc-user mailing list