Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rutgers!ames!hao!boulder!cdash From: cdash@boulder.Colorado.EDU (Charles Shub) Newsgroups: comp.unix.questions,comp.edu,comp.lang.misc Subject: Student friendly assemblers Message-ID: <663@boulder.Colorado.EDU> Date: Sun, 17-May-87 23:38:07 EDT Article-I.D.: boulder.663 Posted: Sun May 17 23:38:07 1987 Date-Received: Mon, 18-May-87 03:51:59 EDT References: <351@aucs.UUCP> <588@maccs.UUCP> <234@brandx.rutgers.edu> <593@maccs.UUCP> <6725@mimsy.UUCP> Reply-To: cdash@boulder.Colorado.EDU (Charles Shub) Organization: University of Colorado at Colorado Springs Lines: 59 Xref: mnetor comp.unix.questions:2375 comp.edu:388 comp.lang.misc:399 In article <6725@mimsy.UUCP> chris@mimsy.UUCP (Chris Torek) writes: >In article <593@maccs.UUCP> ns@maccs.UUCP (Nicholas Solntseff) writes: >> [ discussion of assembly options in a unix environment portions deleted ] > >>and did not really address the problem of sophomore students learning >>a very user-unfriendly assembler. > >Okay, here is the *real* question: >What makes an assembler friendly or unfriendly? >I have used: > [ list deleted ] >Of all of these, I like the 4BSD and Sun `as' best, for two reasons: >the 4BSD assembler is fast, and the Sun assembler is reasonably fast >except for extremely large (compiler generated) inputs; and both of >them support a form of temporary labels (4BSD has number labels, Sun >has both number labels and short-scope labels). > >So what is /bin/as missing, or what does it do wrong, that makes it >user-unfriendly? The biggest problem students, especially sophmores, face is that they need simplicity!!!! That means either some simple system calls like INCHWL on TOPS-20 assembler (input character, wait for line feed before returning) or macros (see almost any assembly text book) like read_w to read in word length integers. Students need to be able to write 20 to 30 line programs that do something reasonably useful. I have taught the machine organization and/or symbolic language programming course at several universities for almost 20 years using GE Macro Assembly Processor, Xerox Macro Assembly Program, TOPS-20 Macro, Vax Macro-11 under VMS, and IBM 360 BAL. I have also used a home grown processor for MIXAL [knuth, 1969] and several others. User friendly items include at least: 1. same mnemonic for adding (et. al.) irrespective of whether the operands are registers or memory cells 2. being able to give symbolic names (other than Rn) to registers. 3. identical syntax for accessing an address in either a memory cell or a register. 4. reasonable vehicles for parameters in macro definitions (an avid hater of ampersands here) for both positional and keyword parameters. 5. a reasonable selection of conditional assembly pseudos 6. EXCELLENT error diagnostics because students WILL make errors 7. good literal or remote assembly features so data can be written near the code using it (tops 20 was excellent about this) so students can invoke a print system call or macro and have what is being printed at the print statement rather than in a data block. 8. reasonably free form input (this was a problem way back when) 9. a good selection of pseudos for data generation and storage allocation that match the machine architecture. (I seem to recall one from the distant past that had an ARRAY pseudo that defined the symbol as 1 word less than the next free location so that if you put a 1 in a register and used indexing you got to the first reserved space. This was back before PASCAL so it was what the fortran programmers wanted to do) 10. A user friendly listing so students can see what is happening. I could go on a while, but this is getting long enough already. -- cdash aka cdash@boulder.colorado.edu aka ...hao!boulder!cdash aka ...nbires!boulder!cdash