[[email protected]: Re: Arduino frustrations: C is not a higher-order language, and timing is not an optimization]

Kragen Javier Sitaker <[email protected]>
Newsgroups gmane.culture.people.kragen.discuss
Message-ID <[email protected]>
----- Forwarded message from KPJ <[email protected]> -----

Date: Mon, 2 Jan 2012 12:24:59 +0100
From: KPJ <[email protected]>
To: Kragen Javier Sitaker <[email protected]>
Cc: [email protected]
Subject: Re: Arduino frustrations: C is not a higher-order language,
	and timing is not an optimization
User-Agent: SquirrelMail/1.4.20

Hello.

Kragen Javier Sitaker <[email protected]> wrote:
|
|- The heap grows up and the stack grows down, and there's no memory
|    protection.  Even if you don't use recursion, there's no way to
|    get help from the compiler computing your maximum stack depth,
|    so the way you discover you've malloced too much memory is that
|    your stack corrupts some malloced block, or vice versa.

This is not inherently a problem with higher-vs-lower level language,
as such.

The Digital PDP-10 computer handled this problem in the 1970s and 1980s
by simply re-defining "push" and "pop" to check for stack pointer over-
and underflow. They made this in hardware, but this can of course be
done in software and/or in the compiler as well.

If the stack pointer is replaced by a 2-tuple <-size,pointer> and the
"-size" becomes non-negative, this implies a stack overflow in a "push".

If the "pointer" becomes out of bounds (meaning less than STACK-1 or
greater than STACK+size depending on the implementation, where STACK is
the "beginning of the stack"), this implies a stack underflow.

If your system supports alloca() and friends, they must also be changed
for this scheme to work.

The problem with Arduino and other non-computers is that one must think
in assembler, using C as the "hardware independent assembler". C++ is
not an option due to the inherent code bloat of most C++ compilers. YMMV.

  /kpj


----- End forwarded message -----
-- 
To unsubscribe: http://lists.canonical.org/mailman/listinfo/kragen-discuss
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.