Copyright © Philip M. Parker, INSEAD. Terms of Use.

(From Wikipedia, the free Encyclopedia)
The machine was the first to be specifically designed to evaluate lambda calculus expressions. It was originally described by Peter J. Landin as part of his ISWIM programming language definition in 1963. However it is best known in connection with Peter Henderson's Lispkit Lisp compiler which has been distributed since 1980. Since then it has been used as the target for several other experimental compilers.
In 1989 researchers at the University of Calgary worked on a hardware implementation of the machine.
The SECD machine is stack-based, functions (user-supplied and built-in) taking their parameters from the stack. Arguments to instructions, on the other hand, follow the instructions they belong to.
Like all internal data-structures, the stack is a list, with the S register pointing at the lists head or beginning. Due to the list structure, the stack need not be a continuous block of memory, so stack space is available as long as there is a single free memory cell. Even when all cells have been used, garbage collection may yield additional free memory.
The C register points at the head of the code list that will be evaluated. Once the instruction there has been executed, the C is pointed at the next instruction in the list -- it acts similar to an instruction pointer in conventional machines, only that subsequent instructions are often not in subsequent memory locations.
The current variable environment is managed by the E register, which points at a list of lists. Each individual list represents one environment level: the parameters of the current function are in the head of the list, variables that are free in the current function, but bound by a surrounding function are in subsequently later lists.
The dump, at which's head the D register points, is used as temporary storage for values of the other registers, for example during function calls. It can be likened to the return stack of other machines.
The memory organization of the SECD machine is similar to the model used by most functional language interpreters: a number of memory cells, each of which can hold either an atom (a simple value, for example 13), or represent an empty or non-empty list. In the latter case, the cell holds two pointers to other cells, one representing the first element, the other representing the list except for the first element. The two pointers are traditionally named car and cdr respectively. The different types of values that a cell can hold are distinguished by a tag. Often different types of atoms (integers, strings, etc.) are distinguished as well.
So a list holding the numbers 1, 2, and 3, usually written as "(1 2 3)", could be represented as follows:
9 [ integer | 2 ]
8 [ integer | 3 ]
7 [ list | 8 | 0 ]
6 [ list | 9 | 7 ]
...
2 [ list | 1 | 6 ]
1 [ integer | 1 ]
0 [ nil ]
That the cdr in a list cell has to point at another list is just a convention. If both car and cdr point at atoms, that will yield a pair, usually written like "(1 . 2)"
Peter M. Kogge: The Architecture of Symbolic Computers. ISBN 0-07-035596-7
Peter Henderson, "Functional Programming: Application and Implementation", 1980, Prentice Hall
Anthony J. Field and Peter G. Harrison: Functional Programming. Addison-Wesley, 1988. ISBN 0201192497Registers and Memory
Address Tag Content (value for integers, car & cdr for lists)
The memory cells 3 to 5 do not belong to our list, the cells of which can be distributed randomly over the memory. Cell 2 is the head of the list, it points to cell 1 which holds the first element's value, and the list containing only 2 and 3 (beginning at cell 6). Cell 6 points at a cell holding 2 and at cell 7, which represents the list containing only 3. It does so by pointing at cell 8 containing the value 3, and pointing at an empty list (nil) as cdr. In the SECD machine, cell 0 always implicitly represents the empty list, so no special tag value is needed to signal an empty list (everything needing that can simply point to cell 0).Instructions
A number of additional instructions for basic functions like car, cdr, list construction, integer addition, I/O, etc. exist. They all take any necessary parameters from the stack.Further Reading
Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "SECD machine."
Crosswords: SECD |
| Specialty definitions using "SECD": abstract machine ♦ FP/M, FPM ♦ Lispkit ♦ SECD machine, Stack Environment Control Dump machine. (references) |
Expression using "SECD": SECD machine. Additional references. | |
| Source: compiled by the editor from various references; see credits. |
| Language | Date | Source | Mark Chapter 1, Verse 37 |
| Greek (transliterated) | 250 BC | Septuagint | Kai euronteV auton legousin autw oti panteV zhtousin se |
| Latin | 405 | Vulgate | Et cum invenissent eum dixerunt ei quia omnes quaerunt te |
| Old English | 990 | West Saxon | & þa þe hine ge-metten hyo saigdenhym. eall þis folc þe secd. |
| Middle English | 1395 | Wyclif | And whanne thei hadden founde hym, thei seiden to hym, That alle men seken thee. |
| Renaissance English | 1526 | Tyndale | And when they had founde him they sayde vnto him: all men seke for the. |
| Jacobean English | 1611 | King James | And when they had found him, they said unto him, All men seek for thee. |
| Victorian English | 1833 | Webster | And when they had found him, they said to him, All men seek for thee. |
| Basic English | 1964 | Ogden | And when they came up with him, they said to him, Everyone is looking for you. |
Source: compiled by the editor from various references; see credits. | |||
| Language | Mark Chapter 1, Verse 37 |
| Cebuano | ug sa hingkaplagan na nila siya, sila miingon kaniya, "Ang tanan nangita kanimo." |
| Chinese | 遇 見 了 就 對 他 們 說 、 眾 人 都 找 。 |
| Croatian | Kad ga naðoše, rekoše mu: "Svi te traže." |
| Danish | Og de fandt ham, og de sige til ham: "Alle lede efter dig." |
| Dutch | En zij Hem gevonden hebbende, zeiden tot Hem: Zij zoeken U allen. |
| Finnish | ja löydettyään hänet he sanoivat hänelle: "Kaikki etsivät sinua". |
| French | et, quand ils l`eurent trouvé, ils lui dirent: Tous te cherchent. |
| Gaelic | `S nuair a fhuair iad e, thuirt iad ris: Tha iad uile gad shireadh. |
| German | Und da sie ihn fanden, sprachen sie zu ihm: Jedermann sucht dich. |
| Haitian Creole | Lè yo jwenn li, yo di l' konsa: -Tout moun ap chache ou wi. |
| Hungarian | És a mikor megtalálák õt, mondának néki: Mindenki téged keres. |
| Indonesian-Bahasa Sehari-hari | Dan setelah mereka menemukan-Nya, mereka berkata, "Semua orang sedang mencari Bapak." |
| Indonesian-Terjemahan Lama | Setelah dijumpainya Dia, maka kata mereka itu kepada-Nya, "Semua orang mencari Rabbi!" |
| Italian | e, trovatolo, gli dissero: «Tutti ti cercano!». |
| Korean | 만 나 서 가 로 되 ` 모 " 사 람 이 주 를 찾 나 이 다' |
| Maori | A, ka kitea ia, ka mea ki a ia, E rapu ana nga tangata katoa i a koe. |
| Norwegian | Og de fant ham og sa til ham: Alle leter efter dig. |
| Portuguese | quando o encontraram, disseram-lhe: Todos te buscam. |
| Rumanian | wi cknd L-au gqsit, I-au zis: ,,Toyi Te cautq.`` |
| Russian | Й, ОБК"С еЗП, ЗПЧПТСФ еНХ: ЧУЕ ЙЭХФ фЕ'С. |
| Shuar | Niin Wáinkiar "Ashi shuar Amin eatmainiawai" tiarmiayi. |
| Spanish | Le encontraron y le dijeron: --Todos te buscan. |
| Swahili | Walipomwona wakamwambia, "Kila mtu anakutafuta." |
| Swedish | Och när de funno honom, sade de till honom: "Alla fråga efter dig." |
| Uma | "Wori' tauna mpali' -ko Guru." |
Source: compiled by the editor from various references; see credits. | |
Scrabble® Enable2K-Verified Anagrams | |
| Words within the letters "c-d-e-s" | |
-1 letter: eds, sec. | |
-2 letters: de, ed, es. | |
| Words containing the letters "c-d-e-s" | |
+1 letter: cades, cased, cedes, cedis, codes, coeds, daces, decks, decos, dices, duces, scend. | |
+2 letters: ascend, cadets, cadges, cadres, cashed, casked, caused, ceased, cebids, cedars, ceders, censed, cessed, chased, chides, ciders, clades, closed, codecs, codens, coders, coshed, cosied, costed, credos, creeds, crudes, cursed, cusped, cussed, cyders, dances, decafs, decals, decays, decors, decoys, deices, descry, deuces, dicers, disced, drecks, dunces, edicts, educes, educts, escudo, medics, sacked, sacred, sauced, scaled, scaped, scared, scends, scoped, scored, scowed, screed, scried, secede, second, secund, seduce, sicced, sicked, sliced, socked, spaced, spiced, sucked, synced. | |
| Source: compiled by the editor from various references; see credits. SCRABBLE® is a registered trademark. All intellectual property rights in and to the game are owned in the U.S.A and Canada by Hasbro Inc., and throughout the rest of the world by J.W. Spear & Sons Limited of Maidenhead, Berkshire, England, a subsidiary of Mattel Inc. Mattel and Spear are not affiliated with Hasbro. | |
Hexadecimal (or equivalents, 770AD-1900s) (references)53 45 43 44 |
| Leonardo da Vinci (1452-1519; backwards) (references)
|
| American Sign Language (origins from 1620-1817 in Italy and, especially, France) (references)
|
| Semaphore (1791, in France) (references)
|
| Braille (1829, in France) (references)
|
Morse Code (1836) (references)... . -.-. -.. |
| Dancing Men (Sir Arthur Conan Doyle, 1903) (references)
|
Binary Code (1918-1938, probably earlier) (references)01010011 01000101 01000011 01000100 |
HTML Code (1990) (references)S E C D |
ISO 10646 (1991-1993) (references)0053 0045 0043 0044 |
| British Sign Language (Fingerspelling, BSL; 1992, British Deaf Association Dictionary of British Sign Language) (references)
|
Encryption (beginner's substitution cypher): (references)53393738 |
| 1. Crosswords 2. Expressions 3. Bible Trace 4. Anagrams | 5. Orthography 6. Bibliography |
Copyright © Philip M. Parker, INSEAD. Terms of Use.