From: grante@aquarius.rosemount.com (Grant Edwards)
Subject: Re: Symbolic Interpretation (Re: Young earth creationist logic NOT!)
Reply-To: grante@aquarius.rosemount.com (Grant Edwards)
Organization: Rosemount, Inc.
Date: Fri, 28 Aug 1992 16:50:10 GMT

lawson@acuson.com (Drew Lawson) writes:
: 
: Have you ever studied machine architecture even a little bit?
: 
: By the time a program gets to the machine instruction level, there is
: no remnant of the data structures.  The same memory pattern can be
: accomplished by a tedious organization of memory blocks by an assembly
: language programmer.  The machine execution is not affected by the data
: structures.  The compiler operation is.
: 

I have studied machine architecture quite a bit, and there are
_plenty_ of data structures at the machine instruction level.

The machine instruction itself, for example.  In a processor with a
nice orthogonal instruction set (PDP-11, Z8000, 68000 for example)
there are specific fields that have specific meanings.  That's called
a data structure.  I suppose you could design a processor that had
instruction and operand combinations assigned to random bit patterns
in the instruciton set, but that would be the _last_ job you ever got.

Many machines also implement _in hardware_ one or more stacks, FIFO
queues, content addressable memories, etc.  These are data structures.

There are also page descriptors, page tables, cache control
structures, etc.  These are _all_ data structures.

Many processors have built-in hardware support for floating point
arithmatic of some sort.  A particular floating point representation
is also a data structure.

All processors (that I know of) support integer arithmatic.  Even an
integer is a data structure, and to have meaning you must know if it's
length, bit ordering, whether it is signed, unsigned, 1's compliment,
2's compliment, sign and magnitude, etc.  These are all data
structures that are built in at the machine instruction level.

If you want to, we can suppose a microcoded processor and the claim
that the real program is in microcode and that all of the above data
structures are manifestations of that microcode program.  Well, microcode
instructions are also data structures.

:
: BTW, software was around for a while without the common usage of data
: structures.  So it hardly "fails to exist" in their absence.
:

No, it wasn't.  Software has always utilized data structures of some
kind.  Treating memory as an array of unsigned integers is a data
structure.  Integer arithmetic requires the definition of data
structures at the machine level.

:
: Perhaps you don't know what a data structure is.  It is an
: abstraction.  A way of labeling memory with a conceptual purpose.  They
: are sometimes used without any memory allocation.
: 

Sometimes they are, but there are _plenty_ of data structures that are
present at as low a level as you care to consider.  They might not be
the same ones that a Pascal programmer knows about, but they are there
none the less.

Hell, even LISP programmers who live about as far from the hardware as
possible refer to CDR and CAR operators, which derive their names from
two MACHINE INSTRUCTIONS which refer to HARDWARE REGISTERS on an IBM
700 (700 might not be the exact number).

--
Grant Edwards                                 |Yow!  Did you move a lot of
Rosemount Inc.                                |KOREAN STEAK KNIVES this
                                              |trip, Dingy?
grante@aquarius.rosemount.com                 |
Newsgroups: sci.skeptic,talk.origins