Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!uflorida!gatech!galbp!advdev.LBP.HARRIS.COM!jsb
From: jsb@advdev.LBP.HARRIS.COM (Jeff Barber)
Newsgroups: comp.lang.misc
Subject: Re: Assembly or ....
Summary: Some assembly required.
Keywords: Assembly
Message-ID: <6586@galbp.LBP.HARRIS.COM>
Date: 29 Nov 88 15:35:23 GMT
References: <1388@aucs.UUCP> <407@ubbpc.UUCP>
Sender: news@galbp.LBP.HARRIS.COM
Reply-To: jsb@advdev.UUCP (Jeff Barber)
Organization: Lanier/Harris, Atlanta, GA
Lines: 45

>In article <1388@aucs.UUCP>, 861087p@aucs.UUCP (A N D R E A S) writes:
>> ... if it really worth it to spend time to learn assembly language.

In article <407@ubbpc.UUCP> wgh@ubbpc.UUCP (William G. Hutchison) writes:
> Thus, in the present state of affairs, a high-level language programmer
>MUST know some assembly language to be effective.
> This might change if computer companies (or FSF?) produced high-quality,
>documented software tools like compilers and linkers.  Don't hold your breath!
> If that were to happen, the only people who would have to learn assembly
>language would be compiler writers and possibly microcode engineers.

No-one seems to have mentioned that there are some things in operating
system-type software which can't be done without assembler.

For example:
1.	Power-up memory tests in boot ROM's (where the RAM is not yet
	known to be good).  I suppose this would be possible if you
	had a language where you could force it to use only register
	variables.

2.	Input/output (this is not built into most languages although
	strictly speaking it is possible).  BTW, here I mean I/O like
	"OUT val,ioport"   [or   "OUT ioport,val"   for us Intel programmers]
	*not*	 "PRINTLINE 'Hello, World'".

3.	For access to machine-specific registers and other features.
	E.g. to switch the Intel 80386 into protected mode, you have
	to set up segment registers with proper values, set a bit
	in the CR0 control register and do a jump to flush the
	instruction pre-fetch queue.

On a slightly different note: it's been my own experience that programmers
who aren't comfortable with assembler never completely understand the
subtleties of: pointer manipulations, type conversions between signed
and unsigned, integer truncation and extension, structure padding, etc.
Furthermore, too much of the program (and programming) environment will 
forever remain "magic" if you don't understand assembler and the
underlying machine architecture.  This is okay, I guess, if you want to
write nothing but COBOL applications for the rest of your life.

 *** (Uh-oh, I feel a rash of "Real Programmers don't " ***
 *** articles coming on :-) ***
J. Barber              Lanier Business Systems              Atlanta, GA

                    Just Say No To The United Way.