[OT] [sdiy] IN your mind, what is ....

Forbes, William - EE - UK/Leamington william.forbes at luk-asg.com
Wed Feb 4 16:38:44 CET 2004


I would like to point out that in C at least, goto labels are the only
objects that have true function scope.
Therefore it is not possible to jump outside of a function with the standard
goto.

Bill Forbes.

> -----Original Message-----
> From: Michael E. Caloroso [mailto:analoguediehard at att.net] 
> Sent: 04 February 2004 15:09
> Cc: synth-diy at dropmix.xs4all.nl
> Subject: Re: [OT] [sdiy] IN your mind, what is ....
> 
> 
> >>Not a simpler solution, but it keeps the pointer stack 
> clean which is 
> >>a goto cannot do.
> > 
> 
> Forbes, William - EE - UK/Leamington wrote:
>  > 'continue' and 'break' (except in a switch statement) are 
> effectively  > goto's!  > The all cause a jump and the 
> effects on maintainability can be just a  > severe as a goto! 
>  > Why work round a 'goto' when a 'goto' is the most sensible 
> thing to  > use?
> 
> Don Tillman wrote:
>  > If the operation you're doing is a naturally GOTO-like 
> operation, what  > is so freaking horrible about implementing 
> it with a GOTO instruction?
> 
> Rainer Buchty wrote:
> > A goto statement does *not* affect the stackpointer. It's the 
> > counterpart to JMP/BRA in assembly language. All it does, 
> is setting 
> > the program counter. The stack pointer is influenced by 
> gosub or, for 
> > that matter, any function or procedure call.
> 
> Therein lies the crucial difference between goto and continue/break.
> 
> continue/break keep you *inside* the function.  This keeps the stack 
> clean as you will always encounter each RET call associated with its 
> GOSUB call.
> 
> goto statements can take you *outside* the function.  Do this and now 
> you have pointers in the stack that are invalid.  This fragments the 
> stack, raising the spectre of stack overflow and a system crash. 
> Framented memory is the bane of code that runs 24/7.
> 
> I have done plenty of code optimization of legacy code.  Fragmented 
> memory is one of the worse offenders and is a topic that too few 
> developers are aware of.  Removing fragmented memory can extend code 
> MTBF from a few hours to weeks.
> 
> Yes they may compile as JMP/BRA statements but it is the 
> implementation 
> that is the difference.
> 
> WRT code reliability, that's a clearer way of doing it.  The 
> political 
> correctiveness of eliminating goto's is irrelevant when the target 
> application is critical like medical monitoring apparatus or 
> aerospace 
> controls.  If I ever set foot on a plane that contains some of my 
> design, you better believe I went the extra mile to confirm 
> reliability 
> as the last place to encounter stack overflow/system crash is at 
> 30,000ft above ground.  That's what is so freaking horrible 
> about a goto 
> statement.
> 
> MC
> 



More information about the Synth-diy mailing list