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:
2170:
1110:
977:
623:
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
1950:
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
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
2716:
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
2542:
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:
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.
2709:
695:
processors are able under certain circumstances (when the pipeline is full) of executing two or more instructions simultaneously. For example, the original
350:
2535:
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:
2885:
549:, digits, or characters that correspond to machine commands. Thus, the instruction set is specific to a class of processors using (mostly) the same
2702:
2281:
2809:
2799:
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.
2857:
2814:
2804:
2794:
2528:
2511:
2328:
2080:
1919:
1846:
1775:
1425:
948:
2771:
2192:
1982:
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
1045:, providing a common machine language interface across a line or family of different models of computer with widely different underlying
2166:
1820:
588:, the accumulator is implicitly both the left operand and result of most arithmetic instructions. Some other architectures, such as the
2004:
2488:
2462:
1958:
1954:
1729:
1689:
1640:
1289:
The second condition requires the machine code to have information about the source code encoded within. The information includes a
1157:
1024:
670:
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
2786:
1445:
1202:
Similarly, in a segment based system, segment descriptors can indicate whether a segment can contain executable code and in what
184:
2766:
1480:
1272:
855:
520:
343:
1610:
techniques to still fit everything into a physical sector of only 512 bytes without giving up any of their extended functions.
2846:
2761:
2442:
1603:
1135:
1002:
648:
2344:
601:
and live range tracking parts. A good code optimizer can track implicit and explicit operands which may allow more frequent
2130:
2776:
2362:
1199:, or finding new ways to use existing machine code, by various techniques, is the basis of some security vulnerabilities.
1131:
998:
644:
492:
Machine code is a strictly numerical language, and it is the lowest-level interface to the CPU intended for a programmer.
228:
1811:
2551:
1607:
709:
and skips occur is dependent upon a condition such as a value being greater than, less than, or equal to another value.
462:
422:
402:
277:
2880:
2257:
952:
512:. While it is possible to write programs directly in machine code, managing individual bits and calculating numerical
85:
1120:
987:
633:
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
2835:
2656:
2454:
1767:
1451:
336:
1139:
1124:
1006:
991:
652:
637:
2651:
2620:
1398:
566:
201:
172:
2380:
791:(operation) field, the highest 6 bits. J-type (jump) and I-type (immediate) instructions are fully specified by
2568:
1563:
1353:
1282:
reading of the source code. An obfuscated version of source code is displayed if the machine code is sent to a
751:
256:
178:
2398:
731:
to refer to machine code instructions, rather than using the instructions' numeric values directly, and uses
2221:
1484:
867:
688:
585:
458:
406:
309:
234:
113:
2063:
837:
Load a value into register 8, taken from the memory cell 68 cells after the location listed in register 3:
324:
2625:
1885:
1824:
1575:
1314:
1279:
944:
283:
61:
1587:
417:
Each machine code instruction causes the CPU to perform a very specific task. Examples of tasks include:
2875:
1813:
Towards
Integral Binary Execution: Implementing Oblivious Hashing Using Overlapped Instruction Encodings
1657:
1457:
1222:
1218:
1038:
960:
550:
436:
206:
189:
101:
91:
42:
1940:(2014-07-10). Written at Vrije Universiteit Amsterdam, Amsterdam, Netherlands. Dietrich, Sven (ed.).
2754:
2725:
2635:
1516:
1430:
1196:
602:
426:
387:
262:
1819:. Proceedings of the 9th workshop on Multimedia & Security (MM&Sec '07). Dallas, Texas, US:
2600:
2583:
2472:
2306:
1893:
1829:
1595:
1210:
772:
598:
78:
363:
2678:
2666:
2573:
1996:
1970:
1905:
1889:
1852:
1508:
1504:
1234:
1091:
736:
430:
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
584:
Not all machines or individual instructions have explicit operands. On a machine with a single
2749:
2744:
2683:
2507:
2484:
2458:
2324:
2320:
2310:
2086:
2076:
1988:
1978:
1915:
1842:
1771:
1725:
1685:
1636:
1555:
1415:
1367:
1334:
1306:
1261:
1238:
840:
35 3 8 68 decimal 100011 00011 01000 00000 00001 000100 binary
784:
728:
724:
718:
493:
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".
1297:. The symbol table may be stored within the executable, or it may exist in separate files. A
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
2661:
2438:
2152:
1962:
1834:
1675:
1371:
1341:
1230:
926:
706:
684:
606:
442:
395:
56:
1483:
can sometimes be arranged to merge different code paths back into one through control-flow
831:
For example, adding the registers 1 and 2 and placing the result in register 6 is encoded:
465:(ISA), and hence its own specific machine code language. There are exceptions, such as the
2072:
1941:
1901:
1547:
1512:
1203:
1067:
574:
542:
536:
446:
238:
222:
118:
1053:
of machine language programs between different models. An example of this use is the IBM
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.
2671:
2615:
2588:
2503:
1530:
by themselves and load it into memory as a whole, in contrast to their counterparts in
1440:
1083:
956:
513:
371:
196:
96:
17:
2869:
2605:
2520:
2480:
2447:
2316:
1898:
The
Mathematics of Preference, Choice and Order. Essays in Honor of Peter J. Fishburn
1435:
1401:-based operating systems, the debug symbols are stored in DWARF format in a separate
871:
696:
593:
410:
1856:
2000:
1671:
1488:
1294:
1290:
1226:
937:
906:
732:
702:
375:
71:
2694:
1761:
2630:
2610:
2122:
1966:
1715:
1711:
1591:
1543:
1527:
1265:
1254:
1109:
976:
930:
919:
915:
692:
622:
509:
482:
292:
273:
141:
136:
1602:-level programming in machine language, controlled utilization of (documented)
2578:
1583:
1579:
1551:
1420:
1283:
1096:
when referring to platform-dependent parts of language features or libraries.
1054:
554:
505:
108:
2090:
2071:(Thesis). Lund, Sweden: Department of Electrical and Information Technology,
1992:
1974:
940:
which must run on multiple instruction-set-incompatible processor platforms.
565:
fields that specify the basic instruction type (such as arithmetic, logical,
2253:
2037:
1838:
1807:
1681:
1567:
1382:
1302:
1184:
1042:
902:
740:
379:
156:
31:
2244:
1937:
1326:
1322:
1298:
1079:
1062:
1046:
524:
368:
146:
66:
1318:
1050:
570:
486:
287:
243:
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
1910:
1599:
1539:
1535:
1501:
1330:
562:
497:
470:
268:
1301:
can then read the symbol table to help the programmer interactively
1352:(ADATA). The table is stored in a file that can be produced by the
1041:
is implemented by an even more fundamental underlying layer called
1801:
1799:
1797:
1795:
1793:
1721:
1559:
1524:
1520:
1394:
1390:
1386:
1357:
859:
802:
6 5 5 5 5 6 bits R-type I-type J-type
478:
474:
362:
319:
2449:
Computer
Organization and Design. The Hardware/Software Interface
504:
architecture has available the 0x90 opcode; it is represented as
1943:
1571:
1361:
1345:
723:
A much more human-friendly rendition of machine language, named
523:. A high-level program may be translated into machine code by a
315:
252:
247:
2698:
2524:
1479:
While overlapping instructions on processor architectures with
866:
processor family) it is, within the limits of the control-flow
1531:
1187:
systems memory pages can be toggled to be executable with the
1103:
970:
863:
616:
589:
546:
501:
466:
454:
1260:
Machine code can easily be decoded back to its corresponding
795:. R-type (register) instructions include an additional field
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
1578:- and cross-compatibility with other operating systems in
1475:
1473:
2230:
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
936:
The principle is also used in shared code sequences of
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
2785:
2732:
2644:
2559:
1633:
Computer Organization and Architecture 10th edition
1192:
1188:
2446:
2034:"Graph Based Model for Software Tamper Protection"
2193:"What is "overlapping instructions" obfuscation?"
2027:
2025:
1370:has available a symbol table that is stored in a
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
2710:
2536:
1755:
1753:
1751:
1749:
1747:
951:in existing code repositories and is used in
344:
8:
1558:to take care of all these conditions). When
735:to refer to storage locations and sometimes
453:In general, each architecture family (e.g.,
1138:. Unsourced material may be challenged and
1037:In some computers, the machine code of the
1005:. Unsourced material may be challenged and
651:. Unsourced material may be challenged and
2717:
2703:
2695:
2543:
2529:
2521:
2117:
2115:
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:
38:
1909:
1828:
1806:Jacob, Matthias; Jakubowski, Mariusz H.;
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).
747:, which causes the CPU to decrement the
1623:
1469:
301:
214:
164:
128:
48:
41:
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
1225:systems this comprises the program's
7:
2252:. Proceedings of the ACM, CCS 2007.
1278:The first condition is to accept an
1136:adding citations to reliable sources
1070:emulator on the IBM S/360 model 40.
1003:adding citations to reliable sources
828:fields contain an operand directly.
649:adding citations to reliable sources
1821:Association for Computing Machinery
943:This property is also used to find
2197:Reverse Engineering Stack Exchange
2154:Static Analysis of x86 Executables
302:Notable compilers & toolchains
25:
2165:(Dissertation). Munich, Germany:
1959:Springer International Publishing
1955:Lecture Notes in Computer Science
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
2399:"Symbols for Windows debugging"
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
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
820:gives a shift amount; and the
597:generators, especially in the
1:
2500:Computer Science: An Overview
2498:Brookshear, J. Glenn (2007).
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)
2222:Gates, William "Bill" Henry
1967:10.1007/978-3-319-08509-8_3
1631:Stallings, William (2015).
953:return-oriented programming
773:IBM 704, 709, 704x and 709x
86:Intermediate representation
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:
2652:Binary-code compatibility
2621:Position-independent code
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
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
689:central processing unit
407:central processing unit
310:GNU Compiler Collection
235:Common Language Runtime
18:Instruction overlapping
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
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:
2662:Language binding
2545:
2538:
2531:
2522:
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:
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:
2497:
2491:
2471:
2465:
2437:
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:
2305:
2304:
2300:
2291:
2289:
2280:
2279:
2275:
2266:
2264:
2260:
2249:
2242:
2241:
2237:
2220:
2219:
2215:
2206:
2204:
2191:
2190:
2186:
2176:
2174:
2162:
2150:
2149:
2145:
2136:
2134:
2121:
2120:
2113:
2103:
2101:
2097:
2083:
2073:Lund University
2068:
2061:
2060:
2056:
2047:
2045:
2031:
2030:
2023:
2013:
2011:
2007:
1985:
1946:
1935:
1934:
1930:
1922:
1902:Springer-Verlag
1884:
1883:
1879:
1869:
1867:
1863:
1849:
1816:
1805:
1804:
1791:
1782:
1780:
1778:
1759:
1758:
1745:
1736:
1734:
1732:
1710:
1709:
1705:
1696:
1694:
1692:
1670:
1669:
1665:
1655:
1654:
1650:
1643:
1630:
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:
2897:
2889:
2888:
2883:
2878:
2868:
2867:
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:
2724:
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:
2550:
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:
24:
14:
13:
10:
9:
6:
4:
3:
2:
2898:
2887:
2884:
2882:
2879:
2877:
2874:
2873:
2871:
2859:
2853:
2848:
2842:
2837:
2831:
2830:
2826:
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:
2431:
2423:. 2024-01-12.
2422:
2418:
2412:
2409:
2405:. 2022-12-20.
2404:
2400:
2394:
2391:
2386:
2382:
2376:
2373:
2368:
2364:
2358:
2355:
2350:
2346:
2340:
2337:
2332:
2326:
2322:
2318:
2317:Prentice Hall
2314:
2313:
2308:
2302:
2299:
2287:
2286:developer.com
2283:
2277:
2274:
2259:
2255:
2248:
2247:
2239:
2236:
2232:
2227:
2223:
2217:
2214:
2202:
2198:
2194:
2188:
2185:
2172:
2168:
2160:
2156:
2155:
2147:
2144:
2132:
2128:
2124:
2118:
2116:
2112:
2096:
2092:
2088:
2084:
2078:
2074:
2067:
2066:
2058:
2055:
2043:
2039:
2035:
2028:
2026:
2022:
2006:
2003:. LNCS 8550.
2002:
1998:
1994:
1990:
1986:
1980:
1976:
1972:
1968:
1964:
1960:
1956:
1952:
1945:
1944:
1939:
1932:
1929:
1923:
1917:
1912:
1907:
1903:
1899:
1895:
1891:
1887:
1881:
1878:
1862:
1858:
1854:
1850:
1844:
1840:
1836:
1831:
1826:
1822:
1815:
1814:
1809:
1802:
1800:
1798:
1796:
1794:
1790:
1779:
1773:
1769:
1765:
1764:
1756:
1754:
1752:
1750:
1748:
1744:
1733:
1731:0-89588-094-6
1727:
1723:
1719:
1718:
1713:
1707:
1704:
1693:
1691:0-262-54178-5
1687:
1684:. p. 7.
1683:
1679:
1678:
1673:
1672:Dourish, Paul
1667:
1664:
1659:
1652:
1649:
1644:
1642:9789332570405
1638:
1634:
1627:
1624:
1617:
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:
1494:
1490:
1486:
1482:
1476:
1474:
1470:
1463:
1459:
1455:
1453:
1450:
1447:
1444:
1442:
1439:
1437:
1436:Overhead code
1434:
1432:
1429:
1427:
1424:
1422:
1419:
1417:
1414:
1413:
1409:
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:
1244:
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:
1099:
1097:
1095:
1093:
1087:
1085:
1081:
1073:
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:
966:
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:
849:
844:
838:
832:
829:
827:
823:
819:
815:
811:
807:
800:
798:
794:
790:
786:
778:
776:
774:
766:
761:
759:
753:
742:
738:
734:
730:
726:
720:
712:
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:
612:
610:
608:
604:
600:
595:
594:stack machine
591:
587:
582:
580:
576:
572:
568:
564:
558:
556:
552:
548:
544:
538:
530:
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:
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:
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:
163:
158:
155:
153:
150:
148:
145:
143:
140:
138:
135:
134:
133:
132:
129:Types of code
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:
47:
44:
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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.