2669:
358:
193:
152:
742:
583:
243:
515:
Insn. Stack Stack
Description before after adi i1 i2 i1+i2 add two integers adr r1 r2 r1+r2 add two reals inn i1 s1 b1 set membership; b1 = whether i1 is a member of s1 ldi i1 i1 i1 load integer constant mov a1 a2 a2 move not
623:
EP -> local stack SP -> ... locals ... parameters ... return address (previous PC) previous EP dynamic link (previous MP) static link (MP of surrounding procedure) MP -> function return value
694:
giving the return type (i, r, c, b, a as above, and p for no return value). The return value has to be stored in the appropriate cell previously. On all types except p, returning will leave this value on the stack.
641:
the stack, i.e. reserve the first five cells of the above stack frame, and initialise previous EP, dynamic, and static link. The caller then computes and pushes any parameters for the procedure, and then issues
317:
Generating machine code is one of the more complicated parts of writing a compiler. By comparison, generating p-code is much easier because no machine-dependent behavior must be considered in generating the
468:(CLR) bytecode or JVM bytecode, there is no stable specification, and the Go build tools do not emit a bytecode format to be used at a later time. The Go assembler uses the generic assembly language as an
129:
into the machine code of the CPU on which the program is to run and then executed. If there is sufficient commercial interest, a hardware implementation of the CPU specification may be built (e.g., the
2925:
2734:
2713:
374:
Please remove or replace such wording and instead of making proclamations about a subject's importance, use facts and attribution to demonstrate that importance.
209:
Please remove or replace such wording and instead of making proclamations about a subject's importance, use facts and attribution to demonstrate that importance.
2883:
110:
generating p-code were the Pascal-P compiler in 1973, by Kesav V. Nori, Urs Ammann, Kathleen Jensen, Hans-Heinrich Nägeli, and
Christian Jacobi, and the
551:
501:
instruction replaces the two topmost elements of the stack with their sum. A few instructions take an immediate argument. Like Pascal, the p-code is
314:
It is much easier to write a small p-code interpreter for a new machine than it is to modify a compiler to generate native code for the same machine.
2889:(Report). Computer Systems Laboratory, Departments of Eleotrioal Engineering and Computer Scienoes, Stanford University. Technioal Note No. 164.
2901:
325:
Since the p-code is based on an ideal virtual machine, a p-code program is often much smaller than the same program translated to machine code.
563:
3193:
367:
202:
3060:
789:
3158:
2933:
566:) register points to the top (lowest used address) of the heap. When EP gets greater than NP, the machine's memory is exhausted.
2815:
3183:
3178:
2744:
656:
the procedure's address). This will save the PC in the return address cell, and set the procedure's address as the new PC.
411:
2778:
593:
3133:
3111:
3092:
3070:
3046:
2969:
389:
285:
224:
179:
637:
specifies the difference in nesting levels (remember that Pascal supports nested procedures). This instruction will
165:
2708:
430:
423:
99:
524:
Similar to a real target CPU, the p-System has only one stack shared by procedure stack frames (providing
2906:
2687:
2674:
469:
446:
429:
In the 1990s, translation into p-code became a popular strategy for implementations of languages such as
253:
336:
One of the significant disadvantages of p-code is execution speed, which can sometimes be corrected via
494:
681:
gives the number of entries needed locally for the stack. Memory exhaustion is checked at this point.
2769:
559:
453:
2911:
419:
337:
307:
2843:
465:
303:
122:
48:
2810:
Nori, Kesav V.; Ammann, Urs; Jensen, Kathleen; Nägeli, Hans-Heinrich; Jacobi, Christian (1975).
677:
essentially specifies the space reserved for locals (plus the number of parameters plus 5), and
59:
pre-compiled code), and to specific implementations, the most famous being the p-Machine of the
2961:
2638:
808:
502:
2615:
752:
461:
414:(BOS) was a cross-platform operating system designed to run p-code programs exclusively. The
2869:
Pascal for small machines - Wirth languages, Pascal, UCSD, Turbo, Delphi, Freepascal, Oberon
3121:
407:
52:
20:
2733:
Upton, Eben; Duntemann, Jeffrey; Roberts, Ralph; Mamtora, Tim; Everard, Ben (2016-09-13).
8:
505:, supporting boolean (b), character (c), integer (i), real (r), set (s), and pointer (a)
341:
171:
3000:
759:
600:
260:
3188:
2792:
529:
131:
126:
3129:
3107:
3088:
3066:
3042:
2965:
2740:
473:
329:
40:
2796:
2996:
2979:
2951:
2782:
525:
434:
403:
3162:
2703:
794:
767:
418:, developed at The University of California, San Diego, was a self-compiling and
32:
51:(CPU)). This term is applied both generically to all such machines (such as the
2865:"Category Archives: Wirth - Euler - Designed by Niklaus Wirth and Helmut Weber"
2829:
2698:
2692:
763:
135:
2864:
2833:
3172:
3080:
3056:
2760:
2641:. Like other p-code implementations, Microsoft p-code enabled a more compact
627:
The procedure calling sequence works as follows: The call is introduced with
537:
490:
442:
415:
125:
by a software program that emulates the behavior of the hypothetical CPU, or
115:
2654:
2622:. At various times, Microsoft has said p-code is an abbreviation for either
569:
The fifth register, PC, points at the current instruction in the code area.
2634:
2619:
550:
EP points to the highest stack location used in the current procedure (the
544:
457:
438:
299:
44:
3021:
2983:
2787:
2764:
302:, a two-stage approach involving translation into p-code and execution by
2955:
801:
64:
3026:, including packaging and pre-compiled binaries; a friendly fork of the
528:, etc.) and the arguments to local instructions. Three of the machine's
3013:
2642:
2765:"EULER: a generalization of ALGOL, and its formal definition: Part II"
456:
uses a generic, portable assembly as a form of p-code, implemented by
3006:
2989:
2611:
850:(13 operations: RETURN, 5 math functions, and 7 comparison functions)
506:
328:
When the p-code is interpreted, the interpreter can apply additional
322:. This makes it useful for getting a compiler up and running quickly.
2668:
2682:
319:
111:
107:
60:
91:
2838:
787:
Niklaus Wirth specified a simple p-code machine in the 1976 book
422:
operating system based on p-code optimized for generation by the
141:
493:, which means that most instructions take their operands from a
2695:, designer of the NCR Corporation version of the p-code machine
2599:, a Pascal subset compiler used to teach compiler development.
56:
698:
Instead of calling a user procedure (cup), standard procedure
2732:
3014:"The Jefferson Computer Museum's page on the UCSD p-System"
2596:
121:
Programs that have been translated to p-code can either be
95:
489:
Like many other p-code machines, the UCSD p-Machine is a
90:
Although the concept was first implemented circa 1966 as
3029:
2957:
2809:
558:
Also present is a constant area, and, below that, the
543:
MP marks the beginning of the active stack frame (the
983:
This is the code for the machine, written in Pascal:
708:
These standard procedures are Pascal procedures like
3001:"pcode of the Pascal Compiler as compiled by itself"
2664:
106:
p-code first appeared in the early 1970s. Two early
2884:A Pascal P-Code Interpreter for the Stanford Emmy
497:, and place results back on the stack. Thus, the
332:that are difficult to implement with native code.
3170:
2736:Learning Computer Architecture with Raspberry Pi
659:User procedures begin with the two instructions
2992:compiler and interpreter, usage instructions.)
2618:. They provided an alternate binary format to
472:, and the Go executables are machine-specific
142:Benefits and weaknesses of implementing p-code
94:for the Basic Combined Programming Language (
2950:
684:Returning to the caller is accomplished via
562:growing down towards the stack. The NP (the
532:point into the stack (which grows upwards):
347:
67:implementation, among whose developers, the
3126:Pascal: The Language and its Implementation
2984:"Pascal Implementation: A Book and Sources"
368:promotes the subject in a subjective manner
298:Compared to direct translation into native
263:into consolidated sections based on topics.
203:promotes the subject in a subjective manner
180:Learn how and when to remove these messages
87:meaning instructions for a pseudo-machine.
2812:The Pascal P Compiler Implementation Notes
2759:
3146:Pascal-S: A Subset and its Implementation
2995:
2978:
2786:
2753:
390:Learn how and when to remove this message
286:Learn how and when to remove this message
225:Learn how and when to remove this message
2857:
2822:
2803:
2648:
3101:
3062:Algorithms + Data Structures = Programs
3041:. Pearson/Addison-Wesley. p. 624.
2926:"Compiling Your Project to Native Code"
2899:
790:Algorithms + Data Structures = Programs
536:SP points to the top of the stack (the
3171:
3120:
2881:
572:
3079:
3055:
3036:
2595:This machine was used to run Wirth's
1237:{program-, base-, topstack-registers}
410:through extensive use of p-code. The
2828:
2816:Eidgenössische Technische Hochschule
2645:at the expense of slower execution.
735:
576:
351:
236:
186:
145:
3194:Programming language implementation
3027:
2779:Association for Computing Machinery
2602:
365:This section contains wording that
200:This section contains wording that
13:
3159:VB P-code Information by Mr Silver
2944:
793:. The machine had 3 registers - a
731:
370:without imparting real information
205:without imparting real information
14:
3205:
3165: (archived December 22, 2015)
3152:
3140:(NB. Especially see the articles
2882:Alpert, Donald (September 1979).
2653:For example implementations, see
940: : increment t-register by
728:is a p-Code instruction instead.
603:and remove advice or instruction.
516:b1 b1 -b1 boolean negation
479:
402:In the early 1980s, at least two
310:(JIT) offers several advantages.
161:This article has multiple issues.
3102:Liffick, Blaise W., ed. (1979).
2834:"The Design of the Go Assembler"
2667:
1018:{maximum depth of block nesting}
740:
652:being the number of parameters,
581:
356:
241:
191:
150:
3009:compiler, generated by itself.)
2988:(NB. Has Pascal sources of the
2930:Visual Studio 6.0 Documentation
2846:from the original on 2021-12-11
2709:City & Guilds Mnemonic Code
484:
460:as an extension of the work on
169:or discuss these issues on the
2918:
2893:
2875:
2726:
519:
98:) and P code for the language
1:
3184:Pascal (programming language)
3142:Pascal-P Implementation Notes
2902:"Microsoft P-Code Technology"
2719:
2633:Microsoft p-code was used in
974: : jump conditional to
814:. There were 8 instructions:
766:in tone and meet Knowledge's
669:, the second sets EP to SP +
620:Stack frames look like this:
3179:Stack-based virtual machines
3022:"Open Source implementation"
2900:Padawer, Andy (April 1992).
7:
3005:(NB. Has the p-code of the
2907:Microsoft Developer Network
2688:Intermediate representation
2675:Computer programming portal
2660:
844: : execute operation
470:intermediate representation
340:. P-code is also easier to
16:Programming virtual machine
10:
3210:
3039:Compiling with C# and Java
2714:Platform-independent model
2652:
665:The first sets SP to MP +
648:to call a user procedure (
512:Some simple instructions:
2770:Communications of the ACM
2739:. John Wiley & Sons.
2610:is a name for several of
2371:{generate new block mark}
1336:{find base l levels down}
412:Business Operating System
348:Implementations of p-code
63:system, particularly the
3030:"Klebsch implementation"
2763:; Weber, Helmut (1966).
2655:Bytecode § Examples
985:
917: : call procedure
891: : store variable
338:Just-in-time compilation
308:just-in-time compilation
3104:The Byte Book of Pascal
2814:. ZĂĽrich, Switzerland:
865: : load variable
827: : load constant
466:Common Language Runtime
49:central processing unit
2932:. 2007. Archived from
2616:intermediate languages
1252:{instruction register}
75:was construed to mean
3122:Barron, David William
3106:. BYTE Publications.
3085:Compiler Construction
2788:10.1145/365170.365202
2649:Other implementations
1417:' start pl/0'
809:top-of-stack register
462:Plan 9 from Bell Labs
114:compiler in 1975, by
29:portable code machine
2999:, ed. (2011-04-13).
2982:, ed. (2011-04-13).
2777:(2). New York, USA:
1033:{size of code array}
760:improve this article
601:rewrite this section
408:machine independence
53:Java virtual machine
35:designed to execute
21:computer programming
3037:Terry, Pat (2005).
2954:; Daniels, Martin.
2842:(Conference talk).
2575:' end pl/0'
724:), etc. Peculiarly
702:can be called with
662:ent 1, i ent 2, j
573:Calling conventions
3087:. Addison-Wesley.
344:than native code.
134:or a version of a
132:Pascal MicroEngine
47:of a hypothetical
3065:. Prentice-Hall.
2997:Pemberton, Steven
2980:Pemberton, Steven
2952:Pemberton, Steven
2746:978-1-119-18393-8
1003:{maximum address}
957: : jump to
785:
784:
768:quality standards
618:
617:
594:a manual or guide
474:statically linked
404:operating systems
400:
399:
392:
296:
295:
288:
278:
277:
235:
234:
227:
184:
41:assembly language
3201:
3139:
3117:
3098:
3076:
3052:
3033:
3025:
3017:
3004:
2987:
2975:
2938:
2937:
2922:
2916:
2915:
2910:. Archived from
2897:
2891:
2890:
2888:
2879:
2873:
2872:
2861:
2855:
2854:
2852:
2851:
2826:
2820:
2819:
2807:
2801:
2800:
2790:
2757:
2751:
2750:
2730:
2677:
2672:
2671:
2603:Microsoft P-Code
2591:
2588:
2585:
2582:
2579:
2576:
2573:
2570:
2567:
2564:
2561:
2558:
2555:
2552:
2549:
2546:
2543:
2540:
2537:
2534:
2531:
2528:
2525:
2522:
2519:
2516:
2513:
2510:
2507:
2504:
2501:
2498:
2495:
2492:
2489:
2486:
2483:
2480:
2477:
2474:
2471:
2468:
2465:
2462:
2459:
2456:
2453:
2450:
2447:
2444:
2441:
2438:
2435:
2432:
2429:
2426:
2423:
2420:
2417:
2414:
2411:
2408:
2405:
2402:
2399:
2396:
2393:
2390:
2387:
2384:
2381:
2378:
2375:
2372:
2369:
2366:
2363:
2360:
2357:
2354:
2351:
2348:
2345:
2342:
2339:
2336:
2333:
2330:
2327:
2324:
2321:
2318:
2315:
2312:
2309:
2306:
2303:
2300:
2297:
2294:
2291:
2288:
2285:
2282:
2279:
2276:
2273:
2270:
2267:
2264:
2261:
2258:
2255:
2252:
2249:
2246:
2243:
2240:
2237:
2234:
2231:
2228:
2225:
2222:
2219:
2216:
2213:
2210:
2207:
2204:
2201:
2198:
2195:
2192:
2189:
2186:
2183:
2180:
2177:
2174:
2171:
2168:
2165:
2162:
2159:
2156:
2153:
2150:
2147:
2144:
2141:
2138:
2135:
2132:
2129:
2126:
2123:
2120:
2117:
2114:
2111:
2108:
2105:
2102:
2099:
2096:
2093:
2090:
2087:
2084:
2081:
2078:
2075:
2072:
2069:
2066:
2063:
2060:
2057:
2054:
2051:
2048:
2045:
2042:
2039:
2036:
2033:
2030:
2027:
2024:
2021:
2018:
2015:
2012:
2009:
2006:
2003:
2000:
1997:
1994:
1991:
1988:
1985:
1982:
1979:
1976:
1973:
1970:
1967:
1964:
1961:
1958:
1955:
1952:
1949:
1946:
1943:
1940:
1937:
1934:
1931:
1928:
1925:
1922:
1919:
1916:
1913:
1910:
1907:
1904:
1901:
1898:
1895:
1892:
1889:
1886:
1883:
1880:
1877:
1874:
1871:
1868:
1865:
1862:
1859:
1856:
1853:
1850:
1847:
1844:
1841:
1838:
1835:
1832:
1829:
1826:
1823:
1820:
1817:
1814:
1811:
1808:
1805:
1802:
1799:
1796:
1793:
1790:
1787:
1784:
1781:
1778:
1775:
1772:
1769:
1766:
1763:
1760:
1757:
1754:
1751:
1748:
1745:
1742:
1739:
1736:
1733:
1730:
1727:
1724:
1721:
1718:
1715:
1712:
1709:
1706:
1703:
1700:
1697:
1694:
1691:
1688:
1685:
1682:
1679:
1676:
1673:
1670:
1667:
1664:
1661:
1658:
1655:
1652:
1649:
1646:
1643:
1640:
1637:
1634:
1631:
1628:
1625:
1622:
1619:
1616:
1613:
1610:
1607:
1604:
1601:
1598:
1595:
1592:
1589:
1586:
1583:
1580:
1577:
1574:
1571:
1568:
1565:
1562:
1559:
1556:
1553:
1550:
1547:
1544:
1541:
1538:
1535:
1532:
1529:
1526:
1523:
1520:
1517:
1514:
1511:
1508:
1505:
1502:
1499:
1496:
1493:
1490:
1487:
1484:
1481:
1478:
1475:
1472:
1469:
1466:
1463:
1460:
1457:
1454:
1451:
1448:
1445:
1442:
1439:
1436:
1433:
1430:
1427:
1424:
1421:
1418:
1415:
1412:
1409:
1406:
1403:
1400:
1397:
1394:
1391:
1388:
1385:
1382:
1379:
1376:
1373:
1370:
1367:
1364:
1361:
1358:
1355:
1352:
1349:
1346:
1343:
1340:
1337:
1334:
1331:
1328:
1325:
1322:
1319:
1316:
1313:
1310:
1307:
1304:
1301:
1298:
1295:
1292:
1289:
1286:
1283:
1280:
1277:
1274:
1271:
1268:
1265:
1262:
1259:
1256:
1253:
1250:
1247:
1244:
1241:
1238:
1235:
1232:
1229:
1226:
1223:
1220:
1217:
1214:
1211:
1208:
1205:
1202:
1199:
1196:
1193:
1190:
1187:
1184:
1181:
1178:
1175:
1172:
1169:
1166:
1163:
1160:
1157:
1154:
1151:
1148:
1145:
1142:
1139:
1136:
1133:
1130:
1127:
1124:
1121:
1118:
1115:
1112:
1109:
1106:
1103:
1100:
1097:
1094:
1091:
1088:
1085:
1082:
1079:
1076:
1073:
1070:
1067:
1064:
1061:
1058:
1055:
1052:
1049:
1046:
1043:
1040:
1037:
1034:
1031:
1028:
1025:
1022:
1019:
1016:
1013:
1010:
1007:
1004:
1001:
998:
995:
992:
989:
979:
973:
962:
956:
945:
939:
928:
922:
916:
902:
896:
890:
876:
870:
864:
849:
843:
832:
826:
780:
777:
771:
744:
743:
736:
727:
723:
719:
715:
711:
701:
693:
680:
676:
672:
668:
655:
651:
636:
613:
610:
604:
592:is written like
585:
584:
577:
500:
435:Microsoft P-Code
395:
388:
384:
381:
375:
360:
359:
352:
342:reverse-engineer
291:
284:
273:
270:
264:
254:pro and con list
245:
244:
237:
230:
223:
219:
216:
210:
195:
194:
187:
176:
154:
153:
146:
79:more often than
3209:
3208:
3204:
3203:
3202:
3200:
3199:
3198:
3169:
3168:
3163:Wayback Machine
3155:
3136:
3114:
3095:
3073:
3049:
3020:
3012:
2972:
2947:
2945:Further reading
2942:
2941:
2924:
2923:
2919:
2898:
2894:
2886:
2880:
2876:
2863:
2862:
2858:
2849:
2847:
2830:Pike, Robert C.
2827:
2823:
2808:
2804:
2758:
2754:
2747:
2731:
2727:
2722:
2704:Token threading
2673:
2666:
2663:
2658:
2651:
2614:'s proprietary
2605:
2593:
2592:
2589:
2586:
2583:
2580:
2577:
2574:
2571:
2568:
2565:
2562:
2559:
2556:
2553:
2550:
2547:
2544:
2541:
2538:
2535:
2532:
2529:
2526:
2523:
2520:
2517:
2514:
2511:
2508:
2505:
2502:
2499:
2496:
2493:
2490:
2487:
2484:
2481:
2478:
2475:
2472:
2469:
2466:
2463:
2460:
2457:
2454:
2451:
2448:
2445:
2442:
2439:
2436:
2433:
2430:
2427:
2424:
2421:
2418:
2415:
2412:
2409:
2406:
2403:
2400:
2397:
2394:
2391:
2388:
2385:
2382:
2379:
2376:
2373:
2370:
2367:
2364:
2361:
2358:
2355:
2352:
2349:
2346:
2343:
2340:
2337:
2334:
2331:
2328:
2325:
2322:
2319:
2316:
2313:
2310:
2307:
2304:
2301:
2298:
2295:
2292:
2289:
2286:
2283:
2280:
2277:
2274:
2271:
2268:
2265:
2262:
2259:
2256:
2253:
2250:
2247:
2244:
2241:
2238:
2235:
2232:
2229:
2226:
2223:
2220:
2217:
2214:
2211:
2208:
2205:
2202:
2199:
2196:
2193:
2190:
2187:
2184:
2181:
2178:
2175:
2172:
2169:
2166:
2163:
2160:
2157:
2154:
2151:
2148:
2145:
2142:
2139:
2136:
2133:
2130:
2127:
2124:
2121:
2118:
2115:
2112:
2109:
2106:
2103:
2100:
2097:
2094:
2091:
2088:
2085:
2082:
2079:
2076:
2073:
2070:
2067:
2064:
2061:
2058:
2055:
2052:
2049:
2046:
2043:
2040:
2037:
2034:
2031:
2028:
2025:
2022:
2019:
2016:
2013:
2010:
2007:
2004:
2001:
1998:
1995:
1992:
1989:
1986:
1983:
1980:
1977:
1974:
1971:
1968:
1965:
1962:
1959:
1956:
1953:
1950:
1947:
1944:
1941:
1938:
1935:
1932:
1929:
1926:
1923:
1920:
1917:
1914:
1911:
1908:
1905:
1902:
1899:
1896:
1893:
1890:
1887:
1884:
1881:
1878:
1875:
1872:
1869:
1866:
1863:
1860:
1857:
1854:
1851:
1848:
1845:
1842:
1839:
1836:
1833:
1830:
1827:
1824:
1821:
1818:
1815:
1812:
1809:
1806:
1803:
1800:
1797:
1794:
1791:
1788:
1785:
1782:
1779:
1776:
1773:
1770:
1767:
1764:
1761:
1758:
1755:
1752:
1749:
1746:
1743:
1740:
1737:
1734:
1731:
1728:
1725:
1722:
1719:
1716:
1713:
1710:
1707:
1704:
1701:
1698:
1695:
1692:
1689:
1686:
1683:
1680:
1677:
1674:
1671:
1668:
1665:
1662:
1659:
1656:
1653:
1650:
1647:
1644:
1641:
1638:
1635:
1632:
1629:
1626:
1623:
1620:
1617:
1614:
1611:
1608:
1605:
1602:
1599:
1596:
1593:
1590:
1587:
1584:
1581:
1578:
1575:
1572:
1569:
1566:
1563:
1560:
1557:
1554:
1551:
1548:
1545:
1542:
1539:
1536:
1533:
1530:
1527:
1524:
1521:
1518:
1515:
1512:
1509:
1506:
1503:
1500:
1497:
1494:
1491:
1488:
1485:
1482:
1479:
1476:
1473:
1470:
1467:
1464:
1461:
1458:
1455:
1452:
1449:
1446:
1443:
1440:
1437:
1434:
1431:
1428:
1425:
1422:
1419:
1416:
1413:
1410:
1407:
1404:
1401:
1398:
1395:
1392:
1389:
1386:
1383:
1380:
1377:
1374:
1371:
1368:
1365:
1362:
1359:
1356:
1353:
1350:
1347:
1344:
1341:
1338:
1335:
1332:
1329:
1326:
1323:
1320:
1317:
1314:
1311:
1308:
1305:
1302:
1299:
1296:
1293:
1290:
1287:
1284:
1281:
1278:
1275:
1272:
1269:
1266:
1263:
1260:
1257:
1254:
1251:
1248:
1245:
1242:
1239:
1236:
1233:
1230:
1227:
1224:
1221:
1218:
1215:
1212:
1209:
1206:
1203:
1200:
1197:
1194:
1191:
1188:
1185:
1182:
1179:
1176:
1173:
1170:
1167:
1164:
1161:
1158:
1155:
1152:
1149:
1146:
1143:
1140:
1137:
1134:
1131:
1128:
1125:
1122:
1119:
1116:
1113:
1110:
1107:
1104:
1101:
1098:
1095:
1092:
1089:
1086:
1083:
1080:
1077:
1074:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1014:
1011:
1008:
1005:
1002:
999:
996:
993:
990:
987:
978:
975:
965:
961:
958:
948:
944:
941:
931:
927:
924:
921:
918:
905:
901:
898:
895:
892:
879:
875:
872:
869:
866:
853:
848:
845:
835:
831:
828:
818:
795:program counter
781:
775:
772:
757:
745:
741:
734:
732:Example machine
725:
721:
717:
713:
709:
706:
699:
691:
688:
678:
674:
670:
666:
663:
653:
649:
646:
634:
631:
625:
614:
608:
605:
598:
586:
582:
575:
552:extreme pointer
522:
517:
498:
487:
482:
396:
385:
379:
376:
373:
361:
357:
350:
330:run-time checks
292:
281:
280:
279:
274:
268:
265:
258:
246:
242:
231:
220:
214:
211:
208:
196:
192:
155:
151:
144:
33:virtual machine
17:
12:
11:
5:
3207:
3197:
3196:
3191:
3186:
3181:
3167:
3166:
3154:
3153:External links
3151:
3150:
3149:
3134:
3124:, ed. (1981).
3118:
3112:
3099:
3093:
3081:Wirth, Niklaus
3077:
3071:
3057:Wirth, Niklaus
3053:
3047:
3034:
3018:
3010:
2993:
2976:
2970:
2946:
2943:
2940:
2939:
2936:on 2007-02-27.
2917:
2914:on 2001-02-22.
2892:
2874:
2856:
2821:
2802:
2781:(ACM): 89–99.
2761:Wirth, Niklaus
2752:
2745:
2724:
2723:
2721:
2718:
2717:
2716:
2711:
2706:
2701:
2699:Runtime system
2696:
2693:Joel McCormack
2690:
2685:
2679:
2678:
2662:
2659:
2650:
2647:
2604:
2601:
986:
981:
980:
976:
963:
959:
946:
942:
929:
925:
919:
903:
899:
893:
877:
873:
867:
851:
846:
833:
829:
783:
782:
748:
746:
739:
733:
730:
704:
686:
661:
644:
629:
622:
616:
615:
589:
587:
580:
574:
571:
556:
555:
548:
541:
526:return address
521:
518:
514:
503:strongly typed
486:
483:
481:
480:UCSD p-Machine
478:
398:
397:
364:
362:
355:
349:
346:
334:
333:
326:
323:
315:
294:
293:
276:
275:
249:
247:
240:
233:
232:
199:
197:
190:
185:
159:
158:
156:
149:
143:
140:
136:Java processor
25:p-code machine
15:
9:
6:
4:
3:
2:
3206:
3195:
3192:
3190:
3187:
3185:
3182:
3180:
3177:
3176:
3174:
3164:
3160:
3157:
3156:
3147:
3143:
3137:
3135:0-471-27835-1
3131:
3127:
3123:
3119:
3115:
3113:0-07-037823-1
3109:
3105:
3100:
3096:
3094:0-201-40353-6
3090:
3086:
3082:
3078:
3074:
3072:0-13-022418-9
3068:
3064:
3063:
3058:
3054:
3050:
3048:0-321-26360-X
3044:
3040:
3035:
3031:
3023:
3019:
3015:
3011:
3008:
3002:
2998:
2994:
2991:
2985:
2981:
2977:
2973:
2971:0-13-653031-1
2967:
2963:
2959:
2958:
2953:
2949:
2948:
2935:
2931:
2927:
2921:
2913:
2909:
2908:
2903:
2896:
2885:
2878:
2871:. 2018-08-02.
2870:
2866:
2860:
2845:
2841:
2840:
2835:
2831:
2825:
2817:
2813:
2806:
2798:
2794:
2789:
2784:
2780:
2776:
2772:
2771:
2766:
2762:
2756:
2748:
2742:
2738:
2737:
2729:
2725:
2715:
2712:
2710:
2707:
2705:
2702:
2700:
2697:
2694:
2691:
2689:
2686:
2684:
2681:
2680:
2676:
2670:
2665:
2656:
2646:
2644:
2640:
2636:
2631:
2629:
2625:
2621:
2617:
2613:
2609:
2600:
2598:
984:
972:
968:
964:
955:
951:
947:
938:
934:
930:
915:
911:
908:
904:
889:
885:
882:
878:
863:
859:
856:
852:
842:
838:
834:
825:
821:
817:
816:
815:
813:
810:
806:
803:
802:base register
799:
796:
792:
791:
779:
769:
765:
761:
755:
754:
751:reads like a
749:This section
747:
738:
737:
729:
703:
696:
685:
682:
660:
657:
643:
640:
628:
621:
612:
602:
597:
595:
590:This section
588:
579:
578:
570:
567:
565:
561:
553:
549:
546:
542:
539:
538:stack pointer
535:
534:
533:
531:
527:
513:
510:
508:
504:
496:
492:
491:stack machine
477:
475:
471:
467:
463:
459:
455:
452:The language
450:
448:
444:
443:Java bytecode
440:
436:
432:
427:
425:
421:
417:
416:UCSD p-System
413:
409:
405:
394:
391:
383:
371:
369:
363:
354:
353:
345:
343:
339:
331:
327:
324:
321:
316:
313:
312:
311:
309:
305:
301:
290:
287:
272:
262:
256:
255:
250:This article
248:
239:
238:
229:
226:
218:
215:December 2014
206:
204:
198:
189:
188:
183:
181:
174:
173:
168:
167:
162:
157:
148:
147:
139:
137:
133:
128:
124:
119:
117:
116:Niklaus Wirth
113:
109:
105:
101:
97:
93:
88:
86:
82:
78:
74:
70:
66:
62:
58:
54:
50:
46:
42:
38:
34:
30:
26:
22:
3145:
3141:
3125:
3103:
3084:
3061:
3038:
2956:
2934:the original
2929:
2920:
2912:the original
2905:
2895:
2877:
2868:
2859:
2848:. Retrieved
2837:
2824:
2811:
2805:
2774:
2768:
2755:
2735:
2728:
2639:Visual Basic
2632:
2627:
2623:
2620:machine code
2607:
2606:
2594:
2551:{with, case}
982:
970:
966:
953:
949:
936:
932:
913:
909:
906:
887:
883:
880:
861:
857:
854:
840:
836:
823:
819:
811:
804:
797:
788:
786:
776:January 2024
773:
750:
707:
697:
689:
683:
664:
658:
647:
638:
632:
626:
619:
609:January 2024
606:
599:Please help
591:
568:
557:
545:mark pointer
523:
511:
488:
485:Architecture
458:Ken Thompson
451:
439:Visual Basic
428:
420:self-hosting
401:
386:
380:January 2024
377:
366:
335:
304:interpreting
300:machine code
297:
282:
269:January 2024
266:
261:rewriting it
259:Please help
251:
221:
212:
201:
177:
170:
164:
163:Please help
160:
120:
103:
89:
84:
80:
76:
72:
68:
45:machine code
36:
28:
24:
18:
2628:pseudo code
2624:packed code
2587:{interpret}
1273:{datastore}
1246:instruction
1180:instruction
1099:instruction
762:to make it
564:new pointer
520:Environment
252:contains a
123:interpreted
85:pseudo-code
65:UCSD Pascal
3173:Categories
2962:John Wiley
2850:2017-08-25
2720:References
2643:executable
2635:Visual C++
1606:{operator}
509:natively.
507:data types
476:binaries.
426:language.
166:improve it
127:translated
55:(JVM) and
3189:Compilers
3128:. Wiley.
3028:Klebsch.
2612:Microsoft
1198:stacksize
1189:interpret
1186:procedure
923:at level
645:cup n, p
530:registers
464:. Unlike
406:achieved
172:talk page
108:compilers
3083:(1996).
3059:(1975).
2844:Archived
2832:(2016).
2797:12124100
2683:Bytecode
2661:See also
2014:<>
1618:{return}
1276:function
807:, and a
753:textbook
710:readln()
320:bytecode
112:Pascal-S
81:portable
61:Pascal-P
3161:at the
2839:YouTube
2569:writeln
2326:writeln
1411:writeln
1315:integer
1300:integer
1291:integer
1267:integer
1231:integer
764:neutral
758:Please
722:csp sin
714:csp rln
83:, thus
31:) is a
3132:
3110:
3091:
3069:
3045:
2968:
2818:(ETH).
2795:
2743:
2608:P-Code
1498:repeat
1402:{base}
1135:levmax
1108:record
1105:packed
1006:levmax
705:csp q
633:where
630:mst n
441:, and
431:Python
424:Pascal
102:, the
92:O-code
77:pseudo
73:p-code
57:MATLAB
37:p-code
2887:(PDF)
2793:S2CID
2554:until
2500:begin
2368:begin
2311:begin
2269:begin
2242:<=
2206:begin
2149:begin
2128:>=
2092:begin
2035:begin
1978:begin
1921:begin
1840:begin
1792:begin
1744:begin
1696:begin
1615:begin
1555:begin
1408:begin
1354:begin
1339:while
1321:begin
1261:array
1195:const
1174:array
1021:cxmax
988:const
726:eof()
718:sin()
690:with
687:retC
673:. So
495:stack
100:Euler
39:(the
3144:and
3130:ISBN
3108:ISBN
3089:ISBN
3067:ISBN
3043:ISBN
2966:ISBN
2741:ISBN
2637:and
2597:PL/0
2515:then
2380:base
2185:>
2071:<
1597:case
1540:case
1531:with
1507:code
1390:base
1345:>
1279:base
1168:code
1153:amax
1036:type
997:2047
991:amax
800:, a
639:mark
560:heap
447:Java
104:term
96:BCPL
23:, a
2783:doi
2626:or
2584:end
2548:end
2545:end
2494:jpc
2476:jmp
2452:int
2446:end
2362:cal
2356:end
2305:sto
2299:end
2263:lod
2257:end
2251:end
2233:ord
2194:end
2176:ord
2137:end
2119:ord
2080:end
2062:ord
2023:end
2005:ord
1966:end
1948:ord
1900:odd
1894:ord
1876:end
1870:div
1828:end
1780:end
1732:end
1663:end
1591:opr
1585:end
1549:lit
1399:end
1384:end
1306:var
1210:var
1204:500
1165:var
1159:end
1117:fct
1090:jpc
1084:jmp
1078:int
1072:cal
1066:sto
1060:lod
1054:opr
1048:lit
1039:fct
1027:200
969:0,
967:jpc
952:0,
950:jmp
935:0,
933:int
907:cal
881:sto
855:lod
839:0,
837:opr
822:0,
820:lit
716:),
499:add
445:in
437:in
306:or
138:).
71:in
43:or
19:In
3175::
3148:.)
3007:P4
2990:P4
2964:.
2960:.
2928:.
2904:.
2867:.
2836:.
2791:.
2773:.
2767:.
2630:.
2533::=
2521::=
2503:if
2485::=
2461::=
2440::=
2422::=
2410::=
2398::=
2377::=
2344::=
2317::=
2293::=
2275::=
2230::=
2212::=
2200:13
2173::=
2155::=
2143:12
2116::=
2098::=
2086:11
2059::=
2041::=
2029:10
2002::=
1984::=
1945::=
1927::=
1909:))
1891::=
1864::=
1846::=
1816::=
1798::=
1768::=
1750::=
1720::=
1702::=
1678::=
1654::=
1642::=
1624::=
1603:of
1579::=
1561::=
1546:of
1537:do
1516::=
1504::=
1489::=
1477::=
1465::=
1453::=
1441::=
1429::=
1396:b1
1393::=
1372::=
1360::=
1357:b1
1351:do
1327::=
1324:b1
1309:b1
1264:of
1177:of
1150:..
1132:..
912:,
897:,
886:,
871:,
860:,
554:).
547:).
540:).
454:Go
449:.
433:,
175:.
118:.
3138:.
3116:.
3097:.
3075:.
3051:.
3032:.
3024:.
3016:.
3003:.
2986:.
2974:.
2853:.
2799:.
2785::
2775:9
2749:.
2657:.
2590:;
2581:;
2578:)
2572:(
2566:;
2563:0
2560:=
2557:p
2542:1
2539:-
2536:t
2530:t
2527:;
2524:a
2518:p
2512:0
2509:=
2506:s
2497::
2491:;
2488:a
2482:p
2479::
2473:;
2470:a
2467:+
2464:t
2458:t
2455::
2449:;
2443:a
2437:p
2434:;
2431:1
2428:+
2425:t
2419:b
2416:;
2413:p
2407:s
2404:;
2401:b
2395:s
2392:;
2389:)
2386:l
2383:(
2374:s
2365::
2359:;
2353:1
2350:-
2347:t
2341:t
2338:;
2335:)
2332:s
2329:(
2323:;
2320:s
2314:s
2308::
2302:;
2296:s
2290:s
2287:;
2284:1
2281:+
2278:t
2272:t
2266::
2260:;
2254:;
2248:)
2245:s
2239:s
2236:(
2227:s
2224:;
2221:1
2218:-
2215:t
2209:t
2203::
2197:;
2191:)
2188:s
2182:s
2179:(
2170:s
2167:;
2164:1
2161:-
2158:t
2152:t
2146::
2140:;
2134:)
2131:s
2125:s
2122:(
2113:s
2110:;
2107:1
2104:-
2101:t
2095:t
2089::
2083:;
2077:)
2074:s
2068:s
2065:(
2056:s
2053:;
2050:1
2047:-
2044:t
2038:t
2032::
2026:;
2020:)
2017:s
2011:s
2008:(
1999:s
1996:;
1993:1
1990:-
1987:t
1981:t
1975::
1972:9
1969:;
1963:)
1960:s
1957:=
1954:s
1951:(
1942:s
1939:;
1936:1
1933:-
1930:t
1924:t
1918::
1915:8
1912:;
1906:s
1903:(
1897:(
1888:s
1885::
1882:6
1879:;
1873:s
1867:s
1861:s
1858:;
1855:1
1852:-
1849:t
1843:t
1837::
1834:5
1831:;
1825:s
1822:*
1819:s
1813:s
1810:;
1807:1
1804:-
1801:t
1795:t
1789::
1786:4
1783:;
1777:s
1774:-
1771:s
1765:s
1762:;
1759:1
1756:-
1753:t
1747:t
1741::
1738:3
1735:;
1729:s
1726:+
1723:s
1717:s
1714:;
1711:1
1708:-
1705:t
1699:t
1693::
1690:2
1687:;
1684:s
1681:-
1675:s
1672::
1669:1
1666:;
1660:;
1657:s
1651:b
1648:;
1645:s
1639:p
1636:;
1633:1
1630:-
1627:b
1621:t
1612::
1609:0
1600:a
1594::
1588:;
1582:a
1576:s
1573:;
1570:1
1567:+
1564:t
1558:t
1552::
1543:f
1534:i
1528:;
1525:1
1522:+
1519:p
1513:p
1510:;
1501:i
1495:;
1492:0
1486:s
1483:;
1480:0
1474:s
1471:;
1468:0
1462:s
1459:;
1456:0
1450:p
1447:;
1444:1
1438:b
1435:;
1432:0
1426:t
1423:;
1420:)
1414:(
1405:;
1387:;
1381:1
1378:-
1375:l
1369:l
1366:;
1363:s
1348:0
1342:l
1333:;
1330:b
1318:;
1312::
1303:;
1297::
1294:)
1288::
1285:l
1282:(
1270:;
1258::
1255:s
1249:;
1243::
1240:i
1234:;
1228::
1225:t
1222:,
1219:b
1216:,
1213:p
1207:;
1201:=
1192:;
1183:;
1171::
1162:;
1156:;
1147:0
1144::
1141:a
1138:;
1129:0
1126::
1123:l
1120:;
1114::
1111:f
1102:=
1096:;
1093:)
1087:,
1081:,
1075:,
1069:,
1063:,
1057:,
1051:,
1045:(
1042:=
1030:;
1024:=
1015:;
1012:3
1009:=
1000:;
994:=
977:a
971:a
960:a
954:a
943:a
937:a
926:l
920:a
914:a
910:l
900:a
894:l
888:a
884:l
874:a
868:l
862:a
858:l
847:a
841:a
830:a
824:a
812:t
805:b
798:p
778:)
774:(
770:.
756:.
720:(
712:(
700:q
692:C
679:j
675:i
671:j
667:i
654:p
650:n
635:n
611:)
607:(
596:.
393:)
387:(
382:)
378:(
372:.
289:)
283:(
271:)
267:(
257:.
228:)
222:(
217:)
213:(
207:.
182:)
178:(
69:p
27:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.