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.