Hi,
On Mon, 01 Oct 2007 13:02:32 +0530, David Brown
<address@hidden> wrote:
Royce Pereira wrote:
So I have to write more 'C' code :) to get the same stuff done,
in the 'new & smarter' compiler! Interesting.....
Doesn't seem right, some how.
Regards, --Royce.
It might not seem right, but that's the way it is. The compiler
only has to generate code that has the same effect as the source
you've written, and a simple "ret" has that effect.
Why then was the empty 'ret' function retained?
(Instead, the compiler destroys a perfectly good delay loop I've used
for the last 2 years -yes, I'm still sore)
There is no way in C to express the idea of a time delay - the
language has no concept of time. Thus you have to go out of your
way to tell the compiler to be particularly stupid if you want this
sort of code to work. There are other ways to get a delay, such as
the library routines or hardware timers, or by including something
like an "asm volatile ("nop")" in the loop, but using a volatile
loop counter is an easy way to get an approximate delay loop.
Of course, there's no disputing that. But the delay loop is just an
example, of how simple ,intuitive code can throw the compiler into a
tizzy. I've used SDCC(for mcs51) where the compiler 'recognises' code
patterns, and says "Oh, I know what this is - it's a delay loop! -
Let it pass."(for example).