Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
IBM 704
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Instruction and data formats== There are two instruction formats, referred to as "Type A" and "Type B".<ref>{{Cite web | title=From the IBM 704 to the IBM 7094 | author=John Savard | url=http://www.quadibloc.com/comp/cp0309.htm | access-date=2009-11-15}}</ref> Most instructions were of type B. Type A instructions have, in sequence, a 3-bit ''prefix'' (instruction code), a 15-bit ''decrement'' field, a 3-bit ''tag'' field, and a 15-bit ''address'' field. There are conditional jump operations based on the values in the index registers specified in the ''tag'' field. Some instructions also subtract the ''decrement'' field from the contents of the index registers. The implementation requires that the second two bits of the instruction code be non-zero, giving a total of six possible type A instructions. One (STR, instruction code binary 101) was not implemented until the [[IBM 709]]. Type B instructions have, in sequence, a 12-bit instruction code (with bits 2 and 3 set to 0 to distinguish them from type A instructions), a 2-bit ''flag'' field, four unused bits, a 3-bit ''tag'' field, and a 15-bit ''address'' field. * Fixed-point numbers are stored in binary [[Computer numbering formats|sign/magnitude format]]. * Single-precision [[floating-point]] numbers have a magnitude sign, an 8-bit excess-128 exponent and a 27-bit fraction (no hidden bit). * Alphanumeric characters were usually 6-bit [[Binary-coded decimal#IBM|BCD]], packed six to a word. The instruction set implicitly subdivides the data format into the same fields as type A instructions: prefix, decrement, tag and address. Instructions exist to modify each of these fields in a data word without changing the remainder of the word, though the ''Store Tag'' instruction was not implemented on the IBM 704. The original implementation of [[Lisp (programming language)|Lisp]] uses the ''address'' and ''decrement'' fields to store the head and tail of a [[linked list]] respectively. The primitive functions ''[[CAR and CDR|car]]'' ("contents of the address part of register") and ''[[CAR and CDR|cdr]]'' ("contents of the decrement part of register") were named after these fields.<ref>{{Cite web |title=Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I |first=John |last=McCarthy |url=http://www-formal.stanford.edu/jmc/recursive.html |year=1960 |access-date=2009-02-14 |archive-url=https://web.archive.org/web/20131004215327/http://www-formal.stanford.edu/jmc/recursive.html |archive-date=2013-10-04 |url-status=dead }} p. 28.</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)