Knowledge

p-code machine

Source đź“ť

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:
Pascal Implementation: The P4 Compiler and Interpreter
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:(

Index

computer programming
virtual machine
assembly language
machine code
central processing unit
Java virtual machine
MATLAB
Pascal-P
UCSD Pascal
O-code
BCPL
Euler
compilers
Pascal-S
Niklaus Wirth
interpreted
translated
Pascal MicroEngine
Java processor
improve it
talk page
Learn how and when to remove these messages
promotes the subject in a subjective manner
Learn how and when to remove this message
pro and con list
rewriting it
Learn how and when to remove this message
machine code
interpreting
just-in-time compilation

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑