Knowledge

Machine code

Source đź“ť

553:. Successor or derivative processor designs often include instructions of a predecessor and may add new additional instructions. Occasionally, a successor design will discontinue or alter the meaning of some instruction code (typically because it is needed for new purposes), affecting code compatibility to some extent; even compatible processors may show slightly different behavior for some instructions, but this is rarely a problem. Systems may also differ in other details, such as memory arrangement, operating systems, or 364: 1110: 977: 623: 2170: 1174:
The CPU knows what machine code to execute, based on its internal program counter. The program counter points to a memory address and is changed based on special instructions which may cause programmatic branches. The program counter is typically set to a hard coded value when the CPU is first
596:
has most or all of its operands on an implicit stack. Special purpose instructions also often lack explicit operands; for example, CPUID in the x86 architecture writes values into four implicit destination registers. This distinction between explicit and implicit operands is important in code
1082:(also known as p-code), which is either executed by an interpreter or itself compiled into machine code for faster (direct) execution. An exception is when a processor is designed to use a particular bytecode directly as its machine code, such as is the case with 1182:
The CPU is oftentimes told, by page permissions in a paging based system, if the current page actually holds machine code by an execute bit — pages have multiple such permission bits (readable, writable, etc.) for various housekeeping functionality. E.g. on
1950: 413:
machine code is "the binary representation of a computer program which is actually read and interpreted by the computer. A program in machine code consists of a sequence of machine instructions (possibly interspersed with data)."
1170:
From the point of view of the CPU, machine code is stored in RAM, but is typically also kept in a set of caches for performance reasons. There may be different caches for instructions and data, depending on the architecture.
913:
mutually shared their instruction bytes. The technique is rarely used today, but might still be necessary to resort to in areas where extreme optimization for size is necessary on byte-level such as in the implementation of
1178:
Similarly, the program counter can be set to execute whatever machine code is at some arbitrary address, even if this is not valid machine code. This will typically trigger an architecture specific protection fault.
560:
A processor's instruction set may have fixed-length or variable-length instructions. How the patterns are organized varies with the particular architecture and type of instruction. Most instructions have one or more
1057:
family of computers and their successors. With dataflow path widths of 8 bits to 64 bits and beyond, they nevertheless present a common architecture at the machine language level across the entire line.
1487:, overlapping code for different processor architectures can sometimes also be crafted to cause execution paths to branch into different directions depending on the underlying processor, as is sometimes used in 1065:
enables the computer to present the architecture of an entirely different computer. The System/360 line used this to allow porting programs from earlier IBM machines to the new family of computers, e.g. an
691:(CPU). A program's execution is done in order for the CPU that is executing it to solve a problem and thus accomplish a result. While simple processors are able to execute instructions one after another, 516:
is tedious and error-prone. Therefore, programs are rarely written directly in machine code. However, an existing machine code program may be edited if the assembly source code is not available.
705:
may be influenced by special 'jump' and 'skip' instructions that transfer execution to an address (and hence instruction) other than the next numerically sequential address. Whether these
2200: 874:, sometimes possible through opcode-level programming to deliberately arrange the resulting code so that two code paths share a common fragment of opcode sequences. These are called 1195:
can be used to achieve a similar result. If an attempt is made to execute machine code on a non-executable page, an architecture specific fault will typically occur. Treating
2041: 1860: 2716: 557:. Because a program normally relies on such factors, different systems will typically not run the same machine code, even when the same type of processor is used. 775:
had a Compare Accumulator with Storage (CAS) instruction that did a three way compare and conditionally skipped to NSI, NSI+1 or NSI+2, depending on the result.
2542: 695:
processors are able under certain circumstances (when the pipeline is full) of executing two or more instructions simultaneously. For example, the original
901:
In the 1970s and 1980s, overlapping instructions were sometimes used to preserve memory space. One example were in the implementation of error tables in
2416: 1554:
to be stored at the start of the data area in contiguous sectors containing a secondary loader to load the remainder of the file into memory (requiring
592:
architecture, have accumulator versions of common instructions, with the accumulator regarded as one of the general registers by longer instructions. A
2094: 549:, digits, or characters that correspond to machine commands. Thus, the instruction set is specific to a class of processors using (mostly) the same 2281: 1425: 1574:
instructions and split the boot code over two sectors for code size reasons, which was no option to follow for DR-DOS as it would have broken
609:
of registers (a register assigned the result of a constant expression freed up by replacing it by that constant) and other code enhancements.
2709: 2192: 787:
provides a specific example for a machine code whose instructions are always 32 bits long. The general type of instruction is given by the
772: 1045:, providing a common machine language interface across a line or family of different models of computer with widely different underlying 350: 588:, the accumulator is implicitly both the left operand and result of most arithmetic instructions. Some other architectures, such as the 2535: 2004: 1289:
The second condition requires the machine code to have information about the source code encoded within. The information includes a
2885: 577:(s), the addressing offset(s) or index, or the operand value itself (such constant operands contained in an instruction are called 2033: 1264:
source code because assembly language forms a one-to-one mapping to machine code. The assembly language decoding method is called
2702: 1202:
Similarly, in a segment based system, segment descriptors can indicate whether a segment can contain executable code and in what
2809: 2799: 1610:
techniques to still fit everything into a physical sector of only 512 bytes without giving up any of their extended functions.
2857: 2814: 2804: 2794: 2528: 2511: 2328: 2080: 1919: 1846: 1775: 948: 728: 2344: 601:
and live range tracking parts. A good code optimizer can track implicit and explicit operands which may allow more frequent
2771: 2130: 1982: 2362: 1199:, or finding new ways to use existing machine code, by various techniques, is the basis of some security vulnerabilities. 492:
Machine code is a strictly numerical language, and it is the lowest-level interface to the CPU intended for a programmer.
1820: 1811: 17: 2166: 709:
and skips occur is dependent upon a condition such as a value being greater than, less than, or equal to another value.
2257: 512:. While it is possible to write programs directly in machine code, managing individual bits and calculating numerical 2488: 2462: 1958: 1954: 1729: 1689: 1640: 1157: 1024: 670: 496: provides a direct map between the numerical machine code and a human-readable mnemonic. In assembly, numerical 1519:, leaving less than 446 respectively 423 bytes for the code) were traditionally able to locate the boot file in the 1237:
environment, different threads of one process share code space along with data space, which reduces the overhead of
1139: 1006: 652: 2786: 1445: 184: 2766: 1480: 1272: 855: 520: 343: 2380: 791:(operation) field, the highest 6 bits. J-type (jump) and I-type (immediate) instructions are fully specified by 2846: 2761: 2442: 1603: 1282:
reading of the source code. An obfuscated version of source code is displayed if the machine code is sent to a
1135: 1002: 648: 2398: 2776: 1131: 998: 731:
to refer to machine code instructions, rather than using the instructions' numeric values directly, and uses
644: 228: 2551: 2063: 1607: 837:
Load a value into register 8, taken from the memory cell 68 cells after the location listed in register 3:
462: 422: 402: 277: 2880: 952: 417:
Each machine code instruction causes the CPU to perform a very specific task. Examples of tasks include:
85: 1813:
Towards Integral Binary Execution: Implementing Oblivious Hashing Using Overlapped Instruction Encodings
1657: 2835: 2656: 2454: 1767: 1451: 336: 238: 1940:(2014-07-10). Written at Vrije Universiteit Amsterdam, Amsterdam, Netherlands. Dietrich, Sven (ed.). 2651: 2620: 1398: 566: 201: 172: 101: 1819:. Proceedings of the 9th workshop on Multimedia & Security (MM&Sec '07). Dallas, Texas, US: 2568: 1829: 1563: 1353: 1120: 987: 751: 633: 256: 178: 2221: 1484: 1124: 991: 867: 688: 637: 585: 458: 406: 309: 234: 113: 2246:
The Geometry of Innocent Flesh on the Bone: Return-into-libc without Function Calls (on the x86)
569:, etc.), the operation (such as add or compare), and other fields that may give the type of the 30:
For code that is completely internal to some CPUs and normally inaccessible to programmers, see
2625: 1885: 1824: 1575: 1314: 1279: 944: 584:
Not all machines or individual instructions have explicit operands. On a machine with a single
324: 283: 61: 2320: 2310: 840:
35 3 8 68 decimal 100011 00011 01000 00000 00001 000100 binary
2875: 1951:
International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment
1896:(2009) . Brams, Stephen; Gehrlein, William V.; Roberts, Fred S. (eds.). "The Kruskal Count". 1587: 1457: 1297:. The symbol table may be stored within the executable, or it may exist in separate files. A 1222: 1218: 1038: 960: 846:
2 1024 decimal 000010 00000 00000 00000 10000 000000 binary
834:
0 1 2 6 0 32 decimal 000000 00001 00010 00110 00000 100000 binary
550: 436: 206: 189: 91: 42: 2152: 1675: 2754: 2725: 2635: 1516: 1483:
can sometimes be arranged to merge different code paths back into one through control-flow
1430: 1196: 831:
For example, adding the registers 1 and 2 and placing the result in register 6 is encoded:
602: 465:(ISA), and hence its own specific machine code language. There are exceptions, such as the 426: 387: 262: 1941: 8: 2600: 2583: 2472: 2306: 1893: 1595: 1210: 1053:
of machine language programs between different models. An example of this use is the IBM
598: 78: 1175:
powered on, and will hence execute whatever machine code happens to be at this address.
699:
of 1993 can execute at most two instructions per clock cycle when its pipeline is full.
2678: 2666: 2573: 1996: 1970: 1905: 1889: 1852: 1530:
by themselves and load it into memory as a whole, in contrast to their counterparts in
1508: 1504: 1234: 1091: 736: 430: 446: 2749: 2744: 2683: 2520: 2507: 2484: 2458: 2447: 2324: 2086: 2076: 1988: 1978: 1915: 1898:
The Mathematics of Preference, Choice and Order. Essays in Honor of Peter J. Fishburn
1842: 1771: 1725: 1685: 1636: 1555: 1415: 1401:-based operating systems, the debug symbols are stored in DWARF format in a separate 1367: 1334: 1306: 1261: 1238: 784: 724: 718: 493: 482: 1856: 2661: 2438: 2000: 1962: 1834: 1371: 1341: 1230: 926: 706: 684: 606: 442: 395: 56: 2694: 2072: 1901: 1761: 1547: 1512: 1203: 1067: 574: 542: 536: 363: 222: 118: 2122: 1966: 1715: 2671: 2615: 2588: 2503: 1602:-level programming in machine language, controlled utilization of (documented) 1440: 1083: 956: 513: 371: 196: 96: 1096:
when referring to platform-dependent parts of language features or libraries.
2869: 2605: 2480: 2316: 2090: 2071:(Thesis). Lund, Sweden: Department of Electrical and Information Technology, 1992: 1974: 1435: 940:
which must run on multiple instruction-set-incompatible processor platforms.
871: 696: 593: 565:
fields that specify the basic instruction type (such as arithmetic, logical,
410: 1838: 1807: 2244: 1671: 1488: 1294: 1290: 1226: 937: 906: 732: 702: 375: 71: 1937: 2630: 2610: 1711: 1591: 1543: 1527: 1265: 1254: 930: 919: 915: 692: 509: 292: 273: 141: 136: 2578: 1583: 1579: 1551: 1420: 1283: 1054: 554: 505: 108: 799:
to determine the exact operation. The fields used in these types are:
500:
and operands are replaced with mnemonics and labels. For example, the
2253: 2037: 1910: 1681: 1567: 1382: 1302: 1184: 1042: 902: 740: 379: 156: 31: 1301:
can then read the symbol table to help the programmer interactively
1109: 976: 622: 1352:(ADATA). The table is stored in a file that can be produced by the 1326: 1322: 1298: 1079: 1062: 1046: 1041:
is implemented by an even more fundamental underlying layer called
524: 368: 146: 66: 1801: 1799: 1797: 1795: 1793: 802:
6 5 5 5 5 6 bits R-type I-type J-type
2449:
Computer Organization and Design. The Hardware/Software Interface
1318: 1050: 570: 504:
architecture has available the 0x90 opcode; it is represented as
486: 287: 243: 1943:
Instruction-Level Steganography for Covert Trigger-Based Malware
723:
A much more human-friendly rendition of machine language, named
523:. A high-level program may be translated into machine code by a 1790: 1599: 1539: 1535: 1501: 1479:
While overlapping instructions on processor architectures with
1330: 866:
processor family) it is, within the limits of the control-flow
562: 497: 470: 268: 1187:
systems memory pages can be toggled to be executable with the
1721: 1559: 1524: 1520: 1394: 1390: 1386: 1357: 1260:
Machine code can easily be decoded back to its corresponding
859: 795:. R-type (register) instructions include an additional field 478: 474: 319: 1878: 1677:
Where the Action is: The Foundations of Embodied Interaction
1550:
locations in the file system and the first three sectors of
1385:
operating systems have available symbol table formats named
439:(ALU) operation on one or more registers or memory locations 1571: 1361: 1345: 315: 252: 247: 1578:- and cross-compatibility with other operating systems in 1475: 1473: 2230: 1805: 1531: 863: 589: 546: 501: 466: 454: 2282:"Managed, Unmanaged, Native: What Kind of Code Is This?" 2159:
Statische Analyse von Programmen in x86 Maschinensprache
2065:
On Offensive and Defensive Methods in Software Security
1470: 936:
The principle is also used in shared code sequences of
2550: 1884: 1271:
Machine code may be decoded back to its corresponding
477:
architecture, which includes optional support of the
469:
architecture, which includes optional support of the
1606:, multi-level data/code overlapping and algorithmic 1329:
computers allowed for an loadable code format named
1089:
Machine code and assembly code are sometimes called
687:
is a list of instructions that can be executed by a
1633:
Computer Organization and Architecture 10th edition
2724: 2446: 2034:"Graph Based Model for Software Tamper Protection" 2437: 2193:"What is "overlapping instructions" obfuscation?" 2027: 2025: 1929: 1370:has available a symbol table that is stored in a 2867: 541:Every processor or processor family has its own 519:The majority of programs today are written in a 485:microprocessor, which can natively process both 27:Lowest level instructions executed by a computer 2312:Structured Computer Organization, Third Edition 1241:considerably as compared to process switching. 754:, would be represented in assembly language as 2055: 2022: 2710: 2536: 1755: 1753: 1751: 1749: 1747: 1494: 951:in existing code repositories and is used in 344: 2299: 2236: 1935: 1759: 1558:to take care of all these conditions). When 966: 735:to refer to storage locations and sometimes 453:In general, each architecture family (e.g., 2144: 1664: 1138:. Unsourced material may be challenged and 1073: 1037:In some computers, the machine code of the 1005:. Unsourced material may be challenged and 849: 651:. Unsourced material may be challenged and 2717: 2703: 2543: 2529: 2497: 2117: 2115: 2031: 1744: 1249:Various tools and methods exist to decode 1221:where the code in execution is stored. In 449:to an instruction that is not the next one 351: 337: 2471: 2305: 2061: 1909: 1828: 1806:Jacob, Matthias; Jakubowski, Mariusz H.; 1630: 1333:. SQUOZE was a compressed binary form of 1158:Learn how and when to remove this message 1078:Machine code is generally different from 1025:Learn how and when to remove this message 671:Learn how and when to remove this message 405:, which are used to control a computer's 2385:Enterprise PL/I for z/OS 6.1 information 2349:High Level Assembler and Toolkit Feature 2062:Jämthagen, Christopher (November 2016). 2032:Jakubowski, Mariusz H. (February 2016). 1763:Digital Design and Computer Architecture 1760:Harris, David; Harris, Sarah L. (2007). 1704: 1244: 747:, which causes the CPU to decrement the 362: 2274: 2242: 2185: 2112: 1670: 14: 2868: 2150: 1635:. Pearson Prentice Hall. p. 776. 1348:, have available a symbol table named 896:jump into the middle of an instruction 367:Machine language monitor running on a 2698: 2524: 2214: 1225:systems this comprises the program's 712: 2252:. Proceedings of the ACM, CCS 2007. 1710: 1649: 1278:The first condition is to accept an 1136:adding citations to reliable sources 1103: 1099: 1070:emulator on the IBM S/360 model 40. 1003:adding citations to reliable sources 970: 828:fields contain an operand directly. 649:adding citations to reliable sources 616: 1821:Association for Computing Machinery 943:This property is also used to find 24: 2431: 2197:Reverse Engineering Stack Exchange 2154:Static Analysis of x86 Executables 530: 302:Notable compilers & toolchains 25: 2897: 2220: 2165:(Dissertation). Munich, Germany: 1959:Springer International Publishing 1955:Lecture Notes in Computer Science 1655: 1337:code and included a symbol table. 2477:Structured Computer Organization 2167:Technische Universität Darmstadt 2123:"Unintended Instructions on x86" 1900:. Berlin / Heidelberg, Germany: 1481:variable-length instruction sets 1446:Reduced instruction set computer 1108: 1061:Using microcode to implement an 975: 856:variable-length instruction sets 854:On processor architectures with 621: 382:of processor register and memory 2886:Low-level programming languages 2409: 2399:"Symbols for Windows debugging" 2391: 2373: 2355: 2337: 2263:from the original on 2021-12-15 2203:from the original on 2021-12-25 2173:from the original on 2020-11-12 2151:Kinder, Johannes (2010-09-24). 2133:from the original on 2021-12-25 2100:from the original on 2023-08-26 2044:from the original on 2019-10-31 2010:from the original on 2023-08-26 1866:from the original on 2018-09-04 1192: 1188: 929:technique as a measure against 925:It is also sometimes used as a 545:. Instructions are patterns of 2726:Types of programming languages 2381:"SYSADATA message information" 2363:"COBOL SYSADATA file contents" 2345:"Associated Data Architecture" 1886:Lagarias, Jeffrey "Jeff" Clark 1624: 820:gives a shift amount; and the 597:generators, especially in the 13: 1: 2826: 2500:Computer Science: An Overview 2498:Brookshear, J. Glenn (2007). 1617: 1586:scenarios, and as with older 1191:system call, and on Windows, 1049:. This is done to facilitate 843:Jumping to the address 1024: 2858:Programming paradigms navbox 2552:Application binary interface 1542:, which instead rely on the 1209:From the point of view of a 816:indicate register operands; 743:processor, the machine code 463:instruction set architecture 259:target-specific initializer) 7: 2222:Gates, William "Bill" Henry 1967:10.1007/978-3-319-08509-8_3 1631:Stallings, William (2015). 1409: 953:return-oriented programming 773:IBM 704, 709, 704x and 709x 766: 761: 612: 86:Intermediate representation 10: 2902: 2657:Foreign function interface 2455:Morgan Kaufmann Publishers 1957:. Egham, UK; Switzerland: 1768:Morgan Kaufmann Publishers 1720:(Third Revised ed.). 1452:Very long instruction word 1253:back to its corresponding 716: 534: 489:and x86 instruction sets. 29: 2785: 2732: 2652:Binary-code compatibility 2644: 2621:Position-independent code 2559: 2367:Enterprise COBOL for z/OS 1724:. pp. 67, 120, 609. 1594:boot sectors resorted to 1570:even switched to require 1566:(LBA) support was added, 1426:List of machine languages 967:Relationship to microcode 481:instruction set; and the 2417:"Querying the .Pdb File" 1810:(20–21 September 2007). 1564:logical block addressing 1546:to occupy the first two 1463: 1354:IBM High-Level Assembler 1286:of the source language. 1074:Relationship to bytecode 911:interleaved instructions 876:overlapping instructions 870:phenomenon known as the 850:Overlapping instructions 752:general-purpose register 409:(CPU). For conventional 2243:Shacham, Hovav (2007). 1839:10.1145/1288869.1288887 1808:Venkatesan, Ramarathnam 1456:Teaching Machine Code: 1275:under two conditions: 945:unintended instructions 918:which have to fit into 778: 689:central processing unit 407:central processing unit 310:GNU Compiler Collection 235:Common Language Runtime 2226:Personal communication 1315:SHARE Operating System 961:return-to-libc attacks 739:. For example, on the 383: 165:Compilation strategies 2847:Programming languages 1511:(which also hold the 1458:Micro-Professor MPF-I 1340:Modern IBM mainframe 1245:Readability by humans 959:for exploits such as 473:instruction set; the 437:arithmetic logic unit 366: 190:Compile and go system 2636:Virtual method table 2473:Tanenbaum, Andrew S. 2307:Tanenbaum, Andrew S. 2109:(1+xvii+1+152 pages) 1894:Vanderbei, Robert J. 1823:. pp. 129–140. 1517:BIOS Parameter Block 1431:Machine code monitor 1360:compiler, and IBM's 1305:the machine code in 1197:data as machine code 1132:improve this section 999:improve this section 892:instruction scission 645:improve this section 603:constant propagation 388:computer programming 263:Java virtual machine 185:Tracing just-in-time 2601:Memory segmentation 2443:Patterson, David A. 1961:. pp. 41–50 . 1936:Andriesse, Dennis; 1890:Rains, Eric Michael 1717:Programming the Z80 1658:"Immediate Operand" 1596:self-modifying code 1505:master boot records 1273:high-level language 1217:is the part of its 1206:that code can run. 880:overlapping opcodes 599:register allocation 521:high-level language 79:Optimizing compiler 18:Machine instruction 2881:Assembly languages 2574:Calling convention 2229:(NB. According to 1590:PCs. Instead, the 1068:IBM 1401/1440/1460 955:as alternative to 713:Assembly languages 555:peripheral devices 384: 2836:Computer language 2823: 2822: 2692: 2691: 2684:Year 2038 problem 2513:978-0-321-38701-1 2439:Hennessy, John L. 2330:978-0-13-854662-5 2082:978-91-7623-942-1 1921:978-3-540-79127-0 1848:978-1-59593-857-2 1777:978-0-12-370497-9 1588:IBM PC–compatible 1500:For example, the 1485:resynchronization 1416:Assembly language 1368:Microsoft Windows 1342:operating systems 1335:assembly language 1262:assembly language 1239:context switching 1168: 1167: 1160: 1100:Storing in memory 1035: 1034: 1027: 785:MIPS architecture 725:assembly language 719:Assembly language 707:conditional jumps 681: 680: 673: 494:Assembly language 361: 360: 43:Program execution 16:(Redirected from 2893: 2862: 2856: 2851: 2845: 2840: 2834: 2719: 2712: 2705: 2696: 2695: 2662:Language binding 2545: 2538: 2531: 2522: 2521: 2517: 2494: 2468: 2452: 2425: 2424: 2413: 2407: 2406: 2395: 2389: 2388: 2377: 2371: 2370: 2359: 2353: 2352: 2341: 2335: 2334: 2303: 2297: 2296: 2294: 2293: 2278: 2272: 2271: 2269: 2268: 2262: 2251: 2240: 2234: 2228: 2218: 2212: 2211: 2209: 2208: 2189: 2183: 2181: 2179: 2178: 2164: 2148: 2142: 2141: 2139: 2138: 2119: 2110: 2108: 2106: 2105: 2099: 2070: 2059: 2053: 2052: 2050: 2049: 2029: 2020: 2018: 2016: 2015: 2009: 1984:978-3-31908508-1 1948: 1933: 1927: 1925: 1913: 1882: 1876: 1874: 1872: 1871: 1865: 1832: 1818: 1803: 1788: 1787: 1785: 1784: 1757: 1742: 1741: 1739: 1738: 1708: 1702: 1701: 1699: 1698: 1668: 1662: 1661: 1656:Kjell, Bradley. 1653: 1647: 1646: 1628: 1611: 1498: 1492: 1477: 1404: 1377: 1372:program database 1231:shared libraries 1194: 1193:VirtualProtect() 1190: 1163: 1156: 1152: 1149: 1143: 1112: 1104: 1030: 1023: 1019: 1016: 1010: 979: 971: 927:code obfuscation 884:overlapping code 757: 750: 746: 685:computer program 676: 669: 665: 662: 656: 625: 617: 607:constant folding 508:in the assembly 411:binary computers 400:machine language 376:code disassembly 353: 346: 339: 215:Notable runtimes 202:Transcompilation 49:General concepts 39: 38: 21: 2901: 2900: 2896: 2895: 2894: 2892: 2891: 2890: 2866: 2865: 2860: 2854: 2849: 2843: 2838: 2832: 2829: 2824: 2819: 2781: 2772:Very high-level 2728: 2723: 2693: 2688: 2640: 2561: 2555: 2549: 2514: 2491: 2465: 2434: 2432:Further reading 2429: 2428: 2421:Microsoft Learn 2415: 2414: 2410: 2403:Microsoft Learn 2397: 2396: 2392: 2379: 2378: 2374: 2361: 2360: 2356: 2343: 2342: 2338: 2331: 2304: 2300: 2291: 2289: 2280: 2279: 2275: 2266: 2264: 2260: 2249: 2241: 2237: 2219: 2215: 2206: 2204: 2191: 2190: 2186: 2176: 2174: 2162: 2149: 2145: 2136: 2134: 2121: 2120: 2113: 2103: 2101: 2097: 2083: 2073:Lund University 2068: 2060: 2056: 2047: 2045: 2030: 2023: 2013: 2011: 2007: 1985: 1946: 1934: 1930: 1922: 1902:Springer-Verlag 1883: 1879: 1869: 1867: 1863: 1849: 1816: 1804: 1791: 1782: 1780: 1778: 1758: 1745: 1736: 1734: 1732: 1709: 1705: 1696: 1694: 1692: 1669: 1665: 1654: 1650: 1643: 1629: 1625: 1620: 1615: 1614: 1548:directory entry 1513:partition table 1499: 1495: 1478: 1471: 1466: 1412: 1402: 1375: 1356:(HLASM), IBM's 1350:Associated data 1317:(1959) for the 1247: 1235:multi-threading 1164: 1153: 1147: 1144: 1129: 1113: 1102: 1084:Java processors 1076: 1031: 1020: 1014: 1011: 996: 980: 969: 933:and tampering. 888:overlapped code 868:resynchronizing 852: 847: 841: 835: 803: 781: 769: 764: 755: 748: 744: 721: 715: 677: 666: 660: 657: 642: 626: 615: 575:addressing mode 543:instruction set 539: 537:Instruction set 533: 531:Instruction set 357: 237:(CLR) and  223:Android Runtime 119:Virtual machine 35: 28: 23: 22: 15: 12: 11: 5: 2899: 2889: 2888: 2883: 2878: 2864: 2863: 2852: 2841: 2828: 2825: 2821: 2820: 2818: 2817: 2812: 2807: 2802: 2797: 2791: 2789: 2783: 2782: 2780: 2779: 2774: 2769: 2764: 2758: 2757: 2752: 2747: 2742: 2736: 2734: 2730: 2729: 2722: 2721: 2714: 2707: 2699: 2690: 2689: 2687: 2686: 2681: 2676: 2675: 2674: 2664: 2659: 2654: 2648: 2646: 2645:Related topics 2642: 2641: 2639: 2638: 2633: 2628: 2623: 2618: 2616:Opaque pointer 2613: 2608: 2603: 2598: 2593: 2592: 2591: 2581: 2576: 2571: 2565: 2563: 2557: 2556: 2548: 2547: 2540: 2533: 2525: 2519: 2518: 2512: 2504:Addison Wesley 2495: 2489: 2469: 2463: 2433: 2430: 2427: 2426: 2408: 2390: 2372: 2354: 2336: 2329: 2298: 2273: 2235: 2213: 2199:. 2013-04-07. 2184: 2143: 2111: 2081: 2075:. p. 96. 2054: 2021: 1983: 1928: 1920: 1877: 1847: 1830:10.1.1.69.5258 1789: 1776: 1743: 1730: 1703: 1690: 1663: 1648: 1641: 1622: 1621: 1619: 1616: 1613: 1612: 1493: 1468: 1467: 1465: 1462: 1461: 1460: 1454: 1449: 1443: 1441:P-code machine 1438: 1433: 1428: 1423: 1418: 1411: 1408: 1407: 1406: 1379: 1365: 1338: 1293:that contains 1246: 1243: 1166: 1165: 1148:September 2024 1116: 1114: 1107: 1101: 1098: 1075: 1072: 1033: 1032: 1015:September 2024 983: 981: 974: 968: 965: 957:code injection 851: 848: 845: 839: 833: 801: 780: 777: 768: 765: 763: 760: 733:symbolic names 729:mnemonic codes 717:Main article: 714: 711: 679: 678: 661:September 2024 629: 627: 620: 614: 611: 535:Main article: 532: 529: 461:) has its own 451: 450: 440: 433: 398:consisting of 372:microprocessor 359: 358: 356: 355: 348: 341: 333: 330: 329: 328: 327: 322: 313: 304: 303: 299: 298: 297: 296: 290: 281: 271: 266: 260: 250: 241: 232: 226: 217: 216: 212: 211: 210: 209: 204: 199: 197:Precompilation 194: 193: 192: 187: 176: 167: 166: 162: 161: 160: 159: 154: 149: 144: 139: 131: 130: 126: 125: 124: 123: 122: 121: 116: 111: 106: 105: 104: 97:Runtime system 89: 83: 82: 81: 76: 75: 74: 59: 51: 50: 46: 45: 26: 9: 6: 4: 3: 2: 2898: 2887: 2884: 2882: 2879: 2877: 2874: 2873: 2871: 2859: 2853: 2848: 2842: 2837: 2831: 2830: 2816: 2813: 2811: 2808: 2806: 2803: 2801: 2798: 2796: 2793: 2792: 2790: 2788: 2784: 2778: 2775: 2773: 2770: 2768: 2765: 2763: 2760: 2759: 2756: 2753: 2751: 2748: 2746: 2743: 2741: 2738: 2737: 2735: 2731: 2727: 2720: 2715: 2713: 2708: 2706: 2701: 2700: 2697: 2685: 2682: 2680: 2677: 2673: 2670: 2669: 2668: 2665: 2663: 2660: 2658: 2655: 2653: 2650: 2649: 2647: 2643: 2637: 2634: 2632: 2629: 2627: 2624: 2622: 2619: 2617: 2614: 2612: 2609: 2607: 2606:Name mangling 2604: 2602: 2599: 2597: 2594: 2590: 2587: 2586: 2585: 2582: 2580: 2577: 2575: 2572: 2570: 2567: 2566: 2564: 2558: 2553: 2546: 2541: 2539: 2534: 2532: 2527: 2526: 2523: 2515: 2509: 2505: 2501: 2496: 2492: 2490:0-13-020435-8 2486: 2482: 2481:Prentice Hall 2478: 2474: 2470: 2466: 2464:1-55860-281-X 2460: 2456: 2451: 2450: 2444: 2440: 2436: 2435: 2423:. 2024-01-12. 2422: 2418: 2412: 2405:. 2022-12-20. 2404: 2400: 2394: 2386: 2382: 2376: 2368: 2364: 2358: 2350: 2346: 2340: 2332: 2326: 2322: 2318: 2317:Prentice Hall 2314: 2313: 2308: 2302: 2287: 2286:developer.com 2283: 2277: 2259: 2255: 2248: 2247: 2239: 2232: 2227: 2223: 2217: 2202: 2198: 2194: 2188: 2172: 2168: 2160: 2156: 2155: 2147: 2132: 2128: 2124: 2118: 2116: 2096: 2092: 2088: 2084: 2078: 2074: 2067: 2066: 2058: 2043: 2039: 2035: 2028: 2026: 2006: 2003:. LNCS 8550. 2002: 1998: 1994: 1990: 1986: 1980: 1976: 1972: 1968: 1964: 1960: 1956: 1952: 1945: 1944: 1939: 1932: 1923: 1917: 1912: 1907: 1903: 1899: 1895: 1891: 1887: 1881: 1862: 1858: 1854: 1850: 1844: 1840: 1836: 1831: 1826: 1822: 1815: 1814: 1809: 1802: 1800: 1798: 1796: 1794: 1779: 1773: 1769: 1765: 1764: 1756: 1754: 1752: 1750: 1748: 1733: 1731:0-89588-094-6 1727: 1723: 1719: 1718: 1713: 1707: 1693: 1691:0-262-54178-5 1687: 1684:. p. 7. 1683: 1679: 1678: 1673: 1672:Dourish, Paul 1667: 1659: 1652: 1644: 1642:9789332570405 1638: 1634: 1627: 1623: 1609: 1605: 1601: 1597: 1593: 1589: 1585: 1581: 1577: 1573: 1569: 1565: 1561: 1557: 1553: 1549: 1545: 1541: 1537: 1533: 1529: 1526: 1522: 1518: 1514: 1510: 1506: 1503: 1497: 1490: 1486: 1482: 1476: 1474: 1469: 1459: 1455: 1453: 1450: 1447: 1444: 1442: 1439: 1437: 1436:Overhead code 1434: 1432: 1429: 1427: 1424: 1422: 1419: 1417: 1414: 1413: 1400: 1396: 1392: 1388: 1384: 1380: 1373: 1369: 1366: 1363: 1359: 1355: 1351: 1347: 1343: 1339: 1336: 1332: 1328: 1324: 1320: 1316: 1312: 1311: 1310: 1308: 1304: 1300: 1296: 1295:debug symbols 1292: 1287: 1285: 1281: 1276: 1274: 1269: 1267: 1263: 1258: 1256: 1252: 1242: 1240: 1236: 1232: 1228: 1224: 1220: 1219:address space 1216: 1212: 1207: 1205: 1200: 1198: 1186: 1180: 1176: 1172: 1162: 1159: 1151: 1141: 1137: 1133: 1127: 1126: 1122: 1117:This section 1115: 1111: 1106: 1105: 1097: 1095: 1093: 1087: 1085: 1081: 1071: 1069: 1064: 1059: 1056: 1052: 1048: 1044: 1040: 1029: 1026: 1018: 1008: 1004: 1000: 994: 993: 989: 984:This section 982: 978: 973: 972: 964: 962: 958: 954: 950: 946: 941: 939: 934: 932: 928: 923: 921: 917: 912: 908: 904: 899: 897: 893: 889: 885: 881: 877: 873: 872:Kruskal count 869: 865: 861: 857: 844: 838: 832: 829: 827: 823: 819: 815: 811: 807: 800: 798: 794: 790: 786: 776: 774: 759: 753: 742: 738: 734: 730: 726: 720: 710: 708: 704: 700: 698: 697:Intel Pentium 694: 690: 686: 675: 672: 664: 654: 650: 646: 640: 639: 635: 630:This section 628: 624: 619: 618: 610: 608: 604: 600: 595: 594:stack machine 591: 587: 582: 580: 576: 572: 568: 564: 558: 556: 552: 548: 544: 538: 528: 526: 522: 517: 515: 511: 507: 503: 499: 495: 490: 488: 484: 480: 476: 472: 468: 464: 460: 456: 448: 444: 441: 438: 434: 432: 428: 424: 420: 419: 418: 415: 412: 408: 404: 401: 397: 396:computer code 393: 389: 381: 377: 374:, displaying 373: 370: 365: 354: 349: 347: 342: 340: 335: 334: 332: 331: 326: 323: 321: 317: 314: 311: 308: 307: 306: 305: 301: 300: 294: 291: 289: 285: 282: 279: 275: 272: 270: 267: 264: 261: 258: 254: 251: 249: 245: 242: 240: 236: 233: 230: 227: 224: 221: 220: 219: 218: 214: 213: 208: 207:Recompilation 205: 203: 200: 198: 195: 191: 188: 186: 183: 182: 180: 177: 174: 173:Ahead-of-time 171: 170: 169: 168: 164: 163: 158: 155: 153: 150: 148: 145: 143: 140: 138: 135: 134: 133: 132: 129:Types of code 128: 127: 120: 117: 115: 112: 110: 107: 103: 100: 99: 98: 95: 94: 93: 90: 87: 84: 80: 77: 73: 70: 69: 68: 65: 64: 63: 60: 58: 55: 54: 53: 52: 48: 47: 44: 41: 40: 37: 33: 19: 2876:Machine code 2861:}} 2855:{{ 2850:}} 2844:{{ 2839:}} 2833:{{ 2739: 2596:Machine code 2595: 2499: 2476: 2448: 2420: 2411: 2402: 2393: 2384: 2375: 2366: 2357: 2348: 2339: 2311: 2301: 2290:. Retrieved 2288:. 2003-04-28 2285: 2276: 2265:. Retrieved 2245: 2238: 2225: 2216: 2205:. Retrieved 2196: 2187: 2175:. Retrieved 2158: 2153: 2146: 2135:. Retrieved 2126: 2102:. Retrieved 2064: 2057: 2046:. Retrieved 2012:. Retrieved 1942: 1938:Bos, Herbert 1931: 1911:math/0110143 1897: 1880: 1868:. Retrieved 1812: 1781:. Retrieved 1762: 1735:. Retrieved 1716: 1712:Zaks, Rodnay 1706: 1695:. Retrieved 1676: 1666: 1651: 1632: 1626: 1604:side effects 1544:system files 1509:boot sectors 1496: 1489:fat binaries 1349: 1291:symbol table 1288: 1277: 1270: 1259: 1251:machine code 1250: 1248: 1229:and usually 1227:code segment 1223:multitasking 1214: 1208: 1201: 1181: 1177: 1173: 1169: 1154: 1145: 1130:Please help 1118: 1090: 1088: 1077: 1060: 1039:architecture 1036: 1021: 1012: 997:Please help 985: 942: 938:fat binaries 935: 924: 920:boot sectors 916:boot loaders 910: 907:Altair BASIC 900: 895: 891: 887: 883: 879: 875: 853: 842: 836: 830: 825: 821: 817: 813: 809: 805: 804: 796: 792: 788: 782: 770: 722: 703:Program flow 701: 682: 667: 658: 643:Please help 631: 583: 578: 559: 551:architecture 540: 518: 491: 452: 431:CPU register 416: 403:instructions 399: 392:machine code 391: 385: 179:Just-in-time 152:Machine code 151: 72:Compile time 36: 2755:Interpreted 2631:System call 2611:Object code 2562:conventions 2231:Jacob et al 2182:(199 pages) 2127:Hacker News 1904:: 371–391. 1592:DR-DOS 7.07 1528:file system 1507:(MBRs) and 1266:disassembly 1255:source code 931:disassembly 693:superscalar 586:accumulator 510:source code 483:PowerPC 615 435:execute an 293:Zend Engine 274:Objective-C 142:Object code 137:Source code 114:Interpreter 62:Translation 2870:Categories 2787:Generation 2767:High-level 2626:Relocation 2579:Call stack 2319:. p.  2292:2008-09-02 2267:2021-12-24 2207:2021-12-25 2177:2021-12-25 2137:2021-12-24 2104:2023-08-26 2048:2023-08-19 2019:(10 pages) 2014:2023-08-26 1926:(22 pages) 1875:(12 pages) 1870:2021-12-25 1783:2023-03-05 1737:2023-03-05 1697:2023-03-05 1618:References 1584:chain load 1580:multi-boot 1552:IBMBIO.COM 1421:Endianness 1397:and other 1344:, such as 1284:decompiler 1280:obfuscated 1215:code space 1189:mprotect() 1055:System/360 109:Executable 2762:Low-level 2569:Alignment 2254:ACM Press 2091:1654-790X 2038:Microsoft 1993:0302-9743 1975:1611-3349 1953:(DIMVA). 1825:CiteSeerX 1682:MIT Press 1568:Microsoft 1383:Unix-like 1364:compiler. 1307:execution 1185:Unix-like 1119:does not 1047:dataflows 1043:microcode 986:does not 903:Microsoft 858:(such as 826:immediate 741:Zilog Z80 737:registers 632:does not 579:immediate 573:(s), the 514:addresses 318:and  286:and  276:and  246:and  157:Microcode 92:Execution 32:Microcode 2827:See also 2777:Esoteric 2750:Compiled 2745:Assembly 2475:(1999). 2445:(1994). 2309:(1990). 2258:Archived 2201:Archived 2171:Archived 2131:Archived 2129:. 2021. 2095:Archived 2042:Archived 2005:Archived 1861:Archived 1857:14174680 1714:(1982). 1674:(2004). 1576:backward 1410:See also 1327:IBM 7094 1323:IBM 7090 1299:debugger 1080:bytecode 1063:emulator 909:, where 767:IBM 709x 762:Examples 745:00000101 613:Programs 525:compiler 369:W65C816S 231:(Erlang) 147:Bytecode 67:Compiler 2740:Machine 2672:dynamic 2584:Library 2169:. D17. 2001:4634611 1949:. 11th 1608:folding 1378:) file. 1319:IBM 709 1211:process 1140:removed 1125:sources 1051:porting 1007:removed 992:sources 949:gadgets 947:called 822:address 727:, uses 653:removed 638:sources 571:operand 498:opcodes 487:PowerPC 421:load a 288:Node.js 244:CPython 102:Runtime 2810:Fourth 2800:Second 2679:Loader 2667:Linker 2589:static 2560:Parts, 2510:  2487:  2461:  2327:  2161:] 2089:  2079:  1999:  1991:  1981:  1973:  1918:  1855:  1845:  1827:  1774:  1728:  1688:  1639:  1600:opcode 1540:PC DOS 1538:, and 1536:MS-DOS 1502:DR-DOS 1448:(RISC) 1399:Darwin 1331:SQUOZE 1325:, and 1213:, the 1092:native 812:, and 563:opcode 471:PDP-11 427:memory 378:, and 269:LuaJIT 181:(JIT) 2815:Fifth 2805:Third 2795:First 2733:Level 2554:(ABI) 2261:(PDF) 2250:(PDF) 2163:(PDF) 2157:[ 2098:(PDF) 2069:(PDF) 2008:(PDF) 1997:S2CID 1971:eISSN 1947:(PDF) 1906:arXiv 1864:(PDF) 1853:S2CID 1817:(PDF) 1722:Sybex 1560:FAT32 1525:FAT16 1521:FAT12 1464:Notes 1405:file. 1403:.dSYM 1395:macOS 1393:. In 1391:DWARF 1387:stabs 1381:Most 1358:COBOL 1303:debug 1233:. In 1204:rings 894:, or 860:Intel 818:shamt 797:funct 756:DEC B 479:IA-32 475:IA-64 429:to a 425:from 380:dumps 320:Clang 312:(GCC) 295:(PHP) 278:Swift 265:(JVM) 225:(ART) 175:(AOT) 2508:ISBN 2485:ISBN 2459:ISBN 2325:ISBN 2087:ISSN 2077:ISBN 1989:ISSN 1979:ISBN 1916:ISBN 1843:ISBN 1772:ISBN 1726:ISBN 1686:ISBN 1637:ISBN 1582:and 1572:i386 1562:and 1515:and 1389:and 1376:.pdb 1362:PL/I 1346:z/OS 1313:The 1123:any 1121:cite 1094:code 990:any 988:cite 783:The 779:MIPS 771:The 636:any 634:cite 567:jump 547:bits 447:skip 443:jump 423:word 325:MSVC 316:LLVM 253:crt0 248:PyPy 239:Mono 229:BEAM 88:(IR) 57:Code 2321:398 1963:doi 1835:doi 1556:SYS 1532:DOS 1523:or 1309:. 1134:by 1001:by 905:'s 864:x86 862:'s 824:or 647:by 590:x86 581:). 506:NOP 502:x86 467:VAX 459:ARM 455:x86 445:or 394:is 386:In 2872:: 2506:. 2502:. 2483:. 2479:. 2457:. 2453:. 2441:; 2419:. 2401:. 2383:. 2365:. 2347:. 2323:. 2315:. 2284:. 2256:. 2233:.) 2224:, 2195:. 2125:. 2114:^ 2093:. 2085:. 2040:. 2036:. 2024:^ 1995:. 1987:. 1977:. 1969:. 1914:. 1892:; 1888:; 1859:. 1851:. 1841:. 1833:. 1792:^ 1770:. 1766:. 1746:^ 1680:. 1598:, 1534:, 1472:^ 1321:, 1268:. 1257:. 1086:. 963:. 922:. 898:. 890:, 886:, 882:, 878:, 814:rd 810:rt 808:, 806:rs 793:op 789:op 758:. 683:A 605:, 527:. 457:, 390:, 284:V8 280:'s 2718:e 2711:t 2704:v 2544:e 2537:t 2530:v 2516:. 2493:. 2467:. 2387:. 2369:. 2351:. 2333:. 2295:. 2270:. 2210:. 2180:. 2140:. 2107:. 2051:. 2017:. 1965:: 1924:. 1908:: 1873:. 1837:: 1786:. 1740:. 1700:. 1660:. 1645:. 1491:. 1374:( 1161:) 1155:( 1150:) 1146:( 1142:. 1128:. 1028:) 1022:( 1017:) 1013:( 1009:. 995:. 749:B 674:) 668:( 663:) 659:( 655:. 641:. 352:e 345:t 338:v 257:C 255:( 34:. 20:)

Index

Machine instruction
Microcode
Program execution
Code
Translation
Compiler
Compile time
Optimizing compiler
Intermediate representation
Execution
Runtime system
Runtime
Executable
Interpreter
Virtual machine
Source code
Object code
Bytecode
Machine code
Microcode
Ahead-of-time
Just-in-time
Tracing just-in-time
Compile and go system
Precompilation
Transcompilation
Recompilation
Android Runtime
BEAM
Common Language Runtime

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

↑