Knowledge (XXG)

Relocation (computing)

Source 📝

1611:
to know which bytes in the program need to be changed when the program is relocated. How does the linker do that without disassembling the whole application? In advance the program is linked for two different origins 0x0100 and 0x0200, from the .REL objects. The linker trick is simply recognising which bytes in the two versions of the executable differ. These bytes are then recorded in the bit mask stored following the executable, and the final .PRL program is designed to run from 0x0100 plus its page offset. The same trick is done for the .RSP and .SPR executable files, except that both these formats forego the offset, and run from 0x0000 plus their page offset.
529:(commonly referred to as LTL code) is the third form of object code. LTL code is similar to PIC in that LTL code can be loaded anywhere in memory. However, when loading LTL code, the Loader changes the base portion of pointers so that the pointers are independent of the initial contents of the registers in the microprocessor. Because of this fixup (adjustment of base addresses), LTL code can be used by tasks having more than one code segment or more than one data segment. This means that LTL programs may be more than 64K bytes in length. 43: 349: 1306:
in which every bit corresponds to a memory location; one bits indicate that a page relocation offset should be added to the corresponding memory location. If you have very few absolute memory references (as opposed to relative ones) you may want to employ a pointer list (2 bytes per reference) rather
1205:
constructed of where pairs of bytes differ in value by exactly 100H. The result is a list of locations where the relocation value needs to be adjusted if the location of a program in memory is to be moved. MP/M calls this sort of file PRL (page relocatable), but I don't know that CP/M 2.2 ever coined
1610:
with some additional information to enable the program and its data to be relocated onto any page. What does a .PRL file look like? The first bytes are size of the program, followed by the program origin at 0x0100. Following the program, there is a bit-for-byte mask appended to allow the MP/M system
201:
to an absolute address in the object code that must be changed when the loader relocates the program so that it will refer to the correct location. Fixups are designed to support relocation of the program as a complete unit. In some cases, each fixup in the table is itself relative to a base address
1063:
and a 47K CP/M. It'd just be ridiculous to have a hard compile in the addresses. So Gary figured this out one night, probably in the middle of the night thinking about some coding thing, and this really made CP/M possible to commercialize. I really think that without that relocation it would have
524:
COMPACT model of segmentation , it can have only one code segment and one data segment, rather than letting the base addresses of these segments, and therefore the segments themselves, vary dynamically. This means that PIC programs are necessarily less than 64K bytes in length. PIC code can be
102:
is the process of assigning load addresses for position-dependent code and data of a program and adjusting the code and data to reflect the assigned addresses. Prior to the advent of multiprocess systems, and still in many embedded systems, the addresses for objects are
1255:
of an address is to be adjusted. Low order address bytes are not affected; hence, "Page relocatable file". Each byte in the bitmap corresponds to 8 bytes in the binary data. So everything to be moved in MOVCPM is part of the image and its relocation bitmap.
516:(commonly referred to as PIC) differs from absolute code in that PIC can be loaded into any memory location. The advantage of PIC over absolute code is that PIC does not require you to reserve a specific block of memory. When the Loader loads PIC, it obtains 360:
is compiled to produce object file (B), shown as both machine code and assembler. The compiler may start the compiled code at an arbitrary location, often location 1 as shown. Location 13 contains the machine code for the jump instruction to statement
1059:. it didn't matter how much memory the computer had, the operating system could always be moved into the high memory. Therefore, you could commercialize this on machines of different amounts of memory. you couldn't be selling a 64K 266:
With 32-bit Windows operating systems, it is not mandatory to provide relocation tables for EXE files, since they are the first image loaded into the virtual address space and thus will be loaded at their preferred base address.
488: 286:, relocation tables once again become mandatory because of the possibility that the binary may be dynamically moved before being executed, even though they are still the first thing loaded in the virtual address space. 372:
is later linked with other code it may be stored at a location other than 1. In this example the linker places it at location 120. The address in the jump instruction, which is now at location 133, must be
1331: 788: 686: 1271: 205:
In some architectures a fixup that crosses certain boundaries (such as a segment boundary) or that is not aligned on a word boundary is illegal and flagged as an error by the linker.
1943: 823: 475: 768: 107:
starting at a known location, often zero. Since multiprocessing systems dynamically link and switch between programs it became necessary to be able to relocate objects using
1154: 1076:, to be precise. You could therefore always relocate it with just a bitmap of where those Laws: Certainly the most eloquent explanation I've ever had of dynamic relocation 1024: 821: 1221: 1185:
is in high memory, above the user application, addresses have to be changed every time the system memory size is changed. Now that requires relocating addresses in
1064:
been a very tough problem. To get people to buy it, it'd seem complicated to them, and if you added more memory you'd have to go get a different operating system.
973: 1354: 1263: 1315:
code. The trick to quickly find this out is to assemble your program twice; the second time offset by 100H, then compare the two binaries. The advantage of
1193:
is not part of the hardware. Without implementing a full-blown relocating assembler and loader, how does one go about this? It's actually pretty clever and
1370: 1051:
he came bouncing into the lab and he said, I have figured out how to relocate. He took advantage of the fact that the only byte was always going to be the
1936: 254:
Instead, segments are relative values in the DOS EXE file. These segments need to be corrected, when the executable has been loaded into memory. The EXE
1319:
relocation is that you don't have to incur a penalty for code that attempts to get around the relocation issue--no "tricks"; just write straight code.
321:
assigning unique run time addresses to each section and each symbol, giving all code (functions) and data (global variables) unique run time addresses
294:
When running native 64-bit binaries on Windows Vista and above, ASLR is mandatory, and thus relocation sections cannot be omitted by the compiler.
384:(D) When the program is loaded into memory to run it may be loaded at some location other than the one assigned by the linker. This example shows 1106: 1089: 388:
now at location 300. The address in the jump instruction, now at 313, needs to be relocated again so that it points to the updated location of
2240: 2117: 1929: 1146: 520:
memory segments from the pool of the calling task's job and loads the PIC into the segments. A restriction concerning PIC is that, as in the
1669: 1471: 64: 939:
method based on a somewhat similar approach was independently conceived and implemented by Matthias R. Paul and Axel C. Frinke for their
916: 625: 1854: 1813: 1518:. There are several file formats which use versions of PRL: SPR (System PRL), RSP (Resident System Process). LINK-80 can also produce 1201:
with the second assembly origin 100H (256 bytes) higher than the first. The two binary images are then compared, byte for byte, and a
275: 143: 1398: 1348: 1316: 805: 657: 570: 150:. Some architectures avoid relocation entirely by deferring address assignment to run time; as, for example, in stack machines with 86: 1213: 306:(ELF) executable format and shared library format used by most Unix-like systems allows several types of relocation to be defined. 2202: 1694: 1653: 454: 194: 819: 1692: 1651: 1811: 2271: 2172: 1852: 1130: 837:
Conference Record: Tenth Annual Asilomar Conference on Circuits, Systems and Computers: Papers Presented November 22–24, 1976
443: 345:
architecture and MIXAL assembly language. The principles are the same for any architecture, though the details will change.
303: 214: 198: 186: 1809: 1104:
Lieber, Eckhard; von Massenbach, Thomas (1987). "CP/M 2 lernt dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M".
1087:
Lieber, Eckhard; von Massenbach, Thomas (1987). "CP/M 2 lernt dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M".
1013: 506:, and an absolute object module, is code that has been processed by LOC86 to run only at a specific location in memory. The 1850: 1441: 1907: 956: 940: 692: 537:
automatically produce LTL code, even for short programs. LTL code can be produced by means of the BIND control of LINK86.
1952: 1772: 1386: 1340: 844:. Asilomar Hotel and Conference Grounds, Pacific Grove, California, USA: Western Periodicals Company. pp. 420–424. 797: 1893: 1865: 1824: 1783: 1744: 1705: 1586: 948: 2266: 2217: 1770: 1326: 279: 1891: 1733: 57: 51: 2057: 1870:. Z-System Corner - Some New Applications of Type-4 Programs (55). S. Plainfield, New Jersey, USA: Socrates Press: 1731: 561:. The Morgan Kaufmann Series in Software Engineering and Programming (1 ed.). San Francisco, California, USA: 120: 1551: 1490: 2207: 2110: 2052: 2021: 1531: 1527: 1182: 1048: 831: 512: 432: 251:
of code/data depends on where the program is loaded in memory and this is not known until the program is loaded.
108: 68: 1969: 744: 988: 1456: 1079: 1020: 755: 719: 222: 151: 314:
The linker reads segment information and relocation tables in the object files and performs relocation by:
1673: 1632: 1464: 884: 880: 342: 1072:, right, for the memory addresses. But they were always in the same place, so you could relocate it on a 597: 1871: 1789: 1750: 1711: 1523: 1005: 928: 783: 772: 1830: 1197:
even uses this scheme to construct its page-relocatable files. You simply assemble the source program
708: 2103: 2036: 1001: 271: 2212: 2001: 1984: 1190: 924: 599: 584: 407: 154:
or in some segmented architectures where every compilation unit is loaded into a separate segment.
835: 2079: 2067: 1974: 1659: 1618: 1044: 920: 892: 827: 779: 507: 402: 255: 177:, or others as established by the programmer, such as common segments, or named static segments. 139: 112: 1740:"Z3PLUS & Relocation - Information on ZCPR3PLUS, and how to write self relocating Z80 code" 1039:
Laws: "dynamic relocation" of the OS. Can you tell us what that is and why it was important?
2192: 2084: 1875: 1834: 1793: 1754: 1715: 1677: 1636: 1537: 1467: 1412: 1404: 1394: 1390: 1344: 1247:
is assembled twice; the second time is 100H bytes offset. The two binaries are compared and a
1073: 965: 845: 801: 732: 576: 566: 448: 1385:. Computer software engineering series (1st printing, 1st ed.). Potomac, Maryland, USA: 990: 617: 17: 2147: 2062: 1568: 943:
to dynamically minimize the runtime footprint of resident drivers and TSRs (like FreeKEYB).)
912: 236: 229: 104: 2157: 1252: 1052: 908: 888: 830:(1977) . "A Simple Technique for Static Relocation of Absolute Machine Code". Written at 562: 427: 197:) and stored in the object or executable file. Each entry in the table, or "fixup", is a 165:
are segmented into various memory segment or section types. Example segment types include
147: 124: 119:, the process of searching files and libraries to replace symbolic references or names of 646: 202:
of zero, so the fixups themselves must be changed as the loader moves through the table.
947:
Mossip, Richard H. (September–October 1980). Written at Bloomingdale, New Jersey, USA.
510:
loads an absolute object module only into the specific location the module must occupy.
2197: 2072: 2016: 1989: 1431: 1374: 1040: 997: 936: 896: 552: 422: 248: 240: 1860: 1819: 1778: 1739: 1700: 2260: 2222: 2095: 2006: 1921: 1628: 1379: 1069: 1009: 283: 1996: 1289: 1238: 1172: 1115: 1098: 874: 338: 170: 166: 348: 1900:"Writing Relocatable Code - Some embedded code must run at more than one address" 328:
to modify symbol references so that they point to the correct run time addresses.
2130: 2031: 2011: 1515: 961: 624:. Technical Information Database - Product: Borland C++ 3.1. TI961C.txt #15961. 412: 162: 31: 1899: 754:. Technical Forum. Vol. 2, no. 11. Peterborough, New Hampshire, USA: 2182: 2126: 1979: 1122: 1081: 932: 718:. Technical Forum. Vol. 2, no. 7. Peterborough, New Hampshire, USA: 656:. Tool Interface Standards (TIS) Portable Formats Specification, Version 1.1. 530: 417: 1906:. The Ganssle Group - Perfecting the Art of Building Embedded Systems / TGG. 1879: 1838: 1797: 1758: 1719: 1681: 1640: 1408: 992:(2 pages) (NB. Describes page boundary relocation and relocating assemblers.) 969: 849: 743:
Ogdin, Carol Anne; Colvin, Neil; Pittman, Tom; Tubb, Philip (November 1977).
1607: 1599: 1578: 1564: 1511: 1507: 1437: 960:. Vol. 1, no. 5. Mountainside & Springfield, New Jersey, USA: 580: 534: 135: 131: 883:
for programs to run. It was also utilized dynamically by the CP/M debugger
2162: 1664: 1623: 1299: 555:(2000) . "Chapter 1: Linking and Loading & Chapter 3: Object Files". 438: 226: 190: 1829:. Z-System Corner (54). S. Plainfield, New Jersey, USA: Socrates Press: 258:
uses a relocation table to find the segments which need to be adjusted.
1818:
Sage, Jay (January–February 1992). Carlson, Art; McEwen, Chris (eds.).
1543: 1482: 1311:
code which doesn't have relative jumps, but may be a consideration for
1283:
I've referenced PRL files and how they originally got their start with
865: 613: 521: 517: 347: 318:
merging all segments of common type into a single segment of that type
2187: 1303: 1284: 1248: 1233: 1202: 1167: 1056: 891:
into higher memory. The same approach was independently developed by
869: 736: 218: 1602:.REL files the linker has to generate a .PRL format executable for 784:"A simple technique for static relocation of absolute machine code" 2227: 2167: 2142: 1779:"More on relocatable code, PRL files, ZCPR34, and Type-4 programs" 1369:
Calingaert, Peter (1979) . "8.2.2 Relocating Loader". Written at
1065: 484: 2245: 2177: 2152: 1859:
Sage, Jay (May–June 1992) . Carlson, Art; McEwen, Chris (eds.).
1603: 1519: 1503: 1416: 1308: 1295: 1244: 1194: 1186: 1178: 1060: 900: 749: 713: 174: 2099: 1925: 618:"Borland article #15961: Coping with 'Fixup Overflow' messages" 556: 1312: 244: 233: 36: 1332:
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia
789:
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia
1014:"Legacy of Gary Kildall: The CP/M IEEE Milestone Dedication" 758:
pp. 198–205. ark:/13960/t59c88b4h, ark:/13960/t3kw76j24
602: 1738:
Mitchell, Bridger (July–August 1988). Carlson, Art (ed.).
1526:) files, which have a PRL header but are not relocatable. 1264:"Re: Is it safe to use RST 28h in CP/M assembly programs?" 1777:
Sage, Jay (September–October 1988). Carlson, Art (ed.).
1019:(video transscription). Pacific Grove, California, USA: 834:, Monterey, California, USA. In Titus, Harold A. (ed.). 1579:"Support for PRL, page relocatable executable for MP/M" 842:
Asilomar Conference on Signals, Systems & Computers
377:
to point to the new location of the code for statement
1440:, Product Support Services. Application Note SS0288. 547: 545: 247:), do not have absolute segments, because the actual 1749:. Advanced CP/M (33). Columbia Falls, Montana, USA: 1514:. The file format is also used for FID files on the 1047:
did was mind boggling. I remember the day at the
2045: 1960: 1788:. ZCPR3 Corner (34). Columbia Falls, Montana, USA: 1710:. ZCPR3 Corner (32). Columbia Falls, Montana, USA: 1378: 972:. ark:/13960/s2cfgkmxcwg. ark:/13960/s2qdm1t01nr. 1502:A PRL file is a relocatable binary file, used by 911:of this method was later utilized by dynamically 525:produced by means of the BIND control of LINK86. 1004:; Laws, David; Michel, Howard E.; Halla, Brian; 707:Formaniak, Peter G.; Leitch, David (July 1977). 115:usually performs relocation in conjunction with 1868:(TCJ) - Programming, User Support, Applications 1827:(TCJ) - Programming, User Support, Applications 1786:(TCJ) - Programming, User Support, Applications 1747:(TCJ) - Programming, User Support, Applications 1708:(TCJ) - Programming, User Support, Applications 1699:Sage, Jay (May–June 1988). Carlson, Art (ed.). 1660:"Relocatable Programs: Microcomputing's Hoboes" 1012:; Kampe, Bill (2014-04-25). Laws, David (ed.). 1381:Assemblers, Compilers, and Program Translation 130:Relocation is typically done by the linker at 2111: 1937: 1243:uses an early type of PRL format. Basically, 709:"A Proposed Microprocessor Software Standard" 8: 1371:University of North Carolina at Chapel Hill 477:iRMX 86 Application Loader Reference Manual 27:Assigning or adjusting addresses at runtime 2118: 2104: 2096: 1944: 1930: 1922: 935:and higher. A much more sophisticated and 860:(609 pages). (This "resize" method, named 87:Learn how and when to remove this message 1327:"Relocation Is Not Just Moving Programs" 1262:Guzis, Charles "Chuck" P. (2016-11-08). 1251:constructed. A set bit implies that the 1212:Guzis, Charles "Chuck" P. (2015-07-29). 1147:"Re: CP/M assembly language programming" 1145:Guzis, Charles "Chuck" P. (2015-03-16). 722:pp. 34, 62–63. ark:/13960/t32245485 688:11/34 Memory Management Basic Logic test 239:), which point to code or data within a 50:This article includes a list of general 466: 647:"Executable and Linkable Format (ELF)" 451:, a lazy form of pointer modification 282:mitigation technique introduced with 7: 1670:CW Communications/Peterborough, Inc. 1023:. CHM Reference number: X7170.2014. 225::offset, used to address 20-bit 640 1606:. The .PRL format is essentially a 1325:Roth, Richard L. (February 1978) . 1307:than a bitmap. This is unlikely in 864:, could be applied statically to a 1530:drivers are in PRL format; so are 1339:(2). Ridgefield, California, USA: 276:address space layout randomization 185:The relocation table is a list of 56:it lacks sufficient corresponding 25: 1294:, but became an integral part of 1107:c't - magazin für computertechnik 1090:c't - magazin für computertechnik 745:"Relocatable Object Code Formats" 175:uninitialized data segment (.bss) 1619:"Understanding Relocatable Code" 1542:Elliott, John C. (2012-06-05) . 1481:Elliott, John C. (2012-06-05) . 455:Relocatable Object Module Format 171:initialized data segment (.data) 123:with actual usable addresses in 41: 1910:from the original on 2019-07-18 1898:Ganssle, Jack (February 1992). 1658:Brothers, Hardin (April 1985). 1617:Brothers, Hardin (April 1983). 1589:from the original on 2020-02-01 1563:The REL format is generated by 1554:from the original on 2020-01-26 1510:for various modules other than 1493:from the original on 2020-01-26 1444:from the original on 2017-09-09 1357:from the original on 2019-04-20 1274:from the original on 2020-02-01 1224:from the original on 2020-02-01 1214:"Re: How does MOVCPM.COM work?" 1157:from the original on 2020-02-01 1133:from the original on 2016-11-25 1030:from the original on 2014-12-27 979:from the original on 2023-11-27 663:from the original on 2019-12-24 628:from the original on 2008-07-07 587:from the original on 2012-12-05 494:from the original on 2020-01-11 685:Johnson, Glenn (1975-12-21) . 304:Executable and Linkable Format 1: 1433:The Microsoft OBJ File Format 941:dynamic dead-code elimination 905:paragraph boundary relocation 693:Digital Equipment Corporation 189:created by the translator (a 134:, but it can also be done at 18:Relocation (computer science) 1953:Application binary interface 1904:Embedded Systems Programming 1861:"Type-3 and Type-4 Programs" 1701:"ZCPR 3.4 - Type-4 Programs" 1387:Computer Science Press, Inc. 1008:; Berg, Brian; Su, Weilian; 487:. pp. 1-2–1-3. 274:and for EXEs which opt into 1002:Rolander, Thomas "Tom" Alan 825:. Originally presented at: 767:(8 pages) (NB. Describes a 752:- the small systems journal 731:(3 pages) (NB. Describes a 716:- the small systems journal 695:(DEC). MAINDEC-11-DFKTA-A-D 337:The following example uses 2288: 2058:Foreign function interface 1532:Resident System Extensions 810:. #22 ark:/13960/t8hf1g21p 127:before running a program. 29: 2236: 2138: 2053:Binary-code compatibility 2022:Position-independent code 1341:People's Computer Company 1121:Huck, Alex (2016-10-09). 879:in order to maximize the 832:Naval Postgraduate School 798:People's Computer Company 513:Position-independent code 433:Position-independent code 109:position-independent code 1461:Modern Operating Systems 1457:Tanenbaum, Andrew Stuart 1270:. Genre: CP/M and MP/M. 1220:. Genre: CP/M and MP/M. 1153:. Genre: CP/M and MP/M. 862:page boundary relocation 527:Load-time locatable code 474:"Types of Object Code". 30:Not to be confused with 1577:feilipu (2018-09-05) . 1459:; Bos, Herbert (2015). 1021:Computer History Museum 899:to produce relocatable 756:Byte Publications, Inc. 720:Byte Publications, Inc. 152:zero address arithmetic 146:by the running program 71:more precise citations. 1882:. ark:/13960/t4dn54d22 1841:. ark:/13960/t89g6n689 1800:. ark:/13960/t0ks7pc39 1761:. ark:/13960/t36121780 1722:. ark:/13960/t1wd4v943 1668:. The Next Step (63). 1627:. The Next Step (39). 1544:"Microsoft REL format" 1465:Pearson Education Inc. 1302:. But PRL files use a 1268:Vintage Computer Forum 1218:Vintage Computer Forum 1151:Vintage Computer Forum 1110:(part 2) (in German). 1093:(part 1) (in German). 1055:. And so he created a 1006:Wharton, John Harrison 885:Dynamic Debugging Tool 769:relocatable hex format 733:relocatable hex format 352: 209:DOS and 16-bit Windows 2272:Assignment operations 2241:Comparison of formats 1598:Out of the assembled 622:community.borland.com 351: 2037:Virtual method table 1866:The Computer Journal 1825:The Computer Journal 1784:The Computer Journal 1745:The Computer Journal 1706:The Computer Journal 310:Relocation procedure 167:code segment (.text) 2002:Memory segmentation 1820:"Ten Years of ZCPR" 1427:(2+xiv+270+6 pages) 1191:relative addressing 937:byte-level granular 828:Kildall, Gary Arlen 780:Kildall, Gary Arlen 558:Linkers and Loaders 408:Library (computing) 232:space available to 2267:Computer libraries 1975:Calling convention 1123:"RSM für CP/M 2.2" 957:S-100 Microsystems 949:"Relocatable Code" 893:Bruce H. Van Natta 782:(February 1978) . 444:Garbage collection 403:Linker (computing) 353: 2254: 2253: 2093: 2092: 2085:Year 2038 problem 1483:"PRL file format" 1343:: 14–20 (70–76). 1177:works? Since the 1074:256 byte boundary 868:disk image using 800:: 10–13 (66–69). 449:Pointer swizzling 324:referring to the 298:Unix-like systems 117:symbol resolution 97: 96: 89: 16:(Redirected from 2279: 2120: 2113: 2106: 2097: 2063:Language binding 1946: 1939: 1932: 1923: 1918: 1916: 1915: 1890: 1888: 1887: 1849: 1847: 1846: 1808: 1806: 1805: 1769: 1767: 1766: 1730: 1728: 1727: 1691: 1689: 1688: 1676:, 100, 102–103. 1650: 1648: 1647: 1613: 1595: 1594: 1573: 1569:Digital Research 1560: 1559: 1536: 1499: 1498: 1477: 1473:978-0-13359162-0 1452: 1450: 1449: 1426: 1424: 1423: 1384: 1365: 1363: 1362: 1321: 1293: 1280: 1279: 1258: 1242: 1230: 1229: 1208: 1176: 1166:Ever wonder how 1163: 1162: 1141: 1139: 1138: 1127:Homecomputer DDR 1119: 1102: 1078: 1036: 1035: 1029: 1018: 987: 985: 984: 978: 964:pp. 54–55. 953: 915:self-relocating 878: 859: 857: 856: 818: 816: 815: 766: 764: 763: 730: 728: 727: 703: 701: 700: 672: 671: 669: 668: 662: 651: 643: 637: 636: 634: 633: 610: 604: 595: 593: 592: 549: 540: 539: 500: 499: 493: 482: 471: 326:relocation table 181:Relocation table 138:by a relocating 92: 85: 81: 78: 72: 67:this article by 58:inline citations 45: 44: 37: 21: 2287: 2286: 2282: 2281: 2280: 2278: 2277: 2276: 2257: 2256: 2255: 2250: 2232: 2134: 2124: 2094: 2089: 2041: 1962: 1956: 1950: 1913: 1911: 1897: 1885: 1883: 1858: 1844: 1842: 1817: 1803: 1801: 1776: 1764: 1762: 1737: 1725: 1723: 1698: 1686: 1684: 1657: 1645: 1643: 1616: 1592: 1590: 1576: 1557: 1555: 1541: 1496: 1494: 1480: 1474: 1455: 1447: 1445: 1430: 1421: 1419: 1401: 1375:Horowitz, Ellis 1368: 1360: 1358: 1351: 1324: 1287: 1277: 1275: 1261: 1253:high-order byte 1236: 1227: 1225: 1211: 1206:a name for it. 1170: 1160: 1158: 1144: 1136: 1134: 1120: 1103: 1086: 1053:high order byte 1033: 1031: 1027: 1016: 998:Eubanks, Gordon 996:Huitt, Robert; 995: 982: 980: 976: 951: 946: 933:DR DOS 6.0 909:another variant 889:relocate itself 872: 854: 852: 826: 813: 811: 808: 778: 761: 759: 742: 725: 723: 706: 698: 696: 684: 681: 679:Further reading 676: 675: 666: 664: 660: 649: 645: 644: 640: 631: 629: 616:(1999-09-01) . 612: 611: 607: 590: 588: 573: 563:Morgan Kaufmann 553:Levine, John R. 551: 550: 543: 497: 495: 491: 480: 473: 472: 468: 463: 428:Self-relocation 399: 335: 312: 300: 292: 264: 211: 183: 160: 93: 82: 76: 73: 63:Please help to 62: 46: 42: 35: 28: 23: 22: 15: 12: 11: 5: 2285: 2283: 2275: 2274: 2269: 2259: 2258: 2252: 2251: 2249: 2248: 2243: 2237: 2234: 2233: 2231: 2230: 2225: 2220: 2215: 2210: 2205: 2200: 2195: 2190: 2185: 2180: 2175: 2170: 2165: 2160: 2155: 2150: 2145: 2139: 2136: 2135: 2125: 2123: 2122: 2115: 2108: 2100: 2091: 2090: 2088: 2087: 2082: 2077: 2076: 2075: 2065: 2060: 2055: 2049: 2047: 2046:Related topics 2043: 2042: 2040: 2039: 2034: 2029: 2024: 2019: 2017:Opaque pointer 2014: 2009: 2004: 1999: 1994: 1993: 1992: 1982: 1977: 1972: 1966: 1964: 1958: 1957: 1951: 1949: 1948: 1941: 1934: 1926: 1920: 1919: 1895: 1856: 1815: 1774: 1735: 1696: 1655: 1635:, 40, 42, 45. 1614: 1574: 1539: 1478: 1472: 1463:(4 ed.). 1453: 1428: 1399: 1366: 1349: 1322: 1259: 1209: 1142: 1084: 1070:bytes reversed 1010:Kildall, Scott 993: 944: 897:IMS Associates 806: 776: 740: 704: 680: 677: 674: 673: 638: 605: 571: 541: 465: 464: 462: 459: 458: 457: 452: 446: 441: 436: 430: 425: 423:Static library 420: 415: 410: 405: 398: 395: 394: 393: 382: 366: 365:in location 5. 334: 331: 330: 329: 322: 319: 311: 308: 299: 296: 291: 290:64-bit Windows 288: 263: 262:32-bit Windows 260: 241:DOS executable 221:pointers with 210: 207: 182: 179: 159: 156: 95: 94: 49: 47: 40: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 2284: 2273: 2270: 2268: 2265: 2264: 2262: 2247: 2244: 2242: 2239: 2238: 2235: 2229: 2226: 2224: 2221: 2219: 2216: 2214: 2211: 2209: 2206: 2204: 2201: 2199: 2196: 2194: 2191: 2189: 2186: 2184: 2181: 2179: 2176: 2174: 2171: 2169: 2166: 2164: 2161: 2159: 2156: 2154: 2151: 2149: 2146: 2144: 2141: 2140: 2137: 2132: 2128: 2121: 2116: 2114: 2109: 2107: 2102: 2101: 2098: 2086: 2083: 2081: 2078: 2074: 2071: 2070: 2069: 2066: 2064: 2061: 2059: 2056: 2054: 2051: 2050: 2048: 2044: 2038: 2035: 2033: 2030: 2028: 2025: 2023: 2020: 2018: 2015: 2013: 2010: 2008: 2007:Name mangling 2005: 2003: 2000: 1998: 1995: 1991: 1988: 1987: 1986: 1983: 1981: 1978: 1976: 1973: 1971: 1968: 1967: 1965: 1959: 1954: 1947: 1942: 1940: 1935: 1933: 1928: 1927: 1924: 1909: 1905: 1901: 1896: 1894: 1892: 1881: 1877: 1873: 1869: 1867: 1862: 1857: 1855: 1853: 1851: 1840: 1836: 1832: 1828: 1826: 1821: 1816: 1814: 1812: 1810: 1799: 1795: 1791: 1787: 1785: 1780: 1775: 1773: 1771: 1760: 1756: 1752: 1748: 1746: 1741: 1736: 1734: 1732: 1721: 1717: 1713: 1709: 1707: 1702: 1697: 1695: 1693: 1683: 1679: 1675: 1671: 1667: 1666: 1661: 1656: 1654: 1652: 1642: 1638: 1634: 1630: 1629:1001001, Inc. 1626: 1625: 1620: 1615: 1612: 1609: 1605: 1601: 1588: 1584: 1580: 1575: 1572: 1570: 1566: 1553: 1549: 1545: 1540: 1538: 1535: 1533: 1529: 1525: 1521: 1517: 1513: 1509: 1505: 1492: 1488: 1484: 1479: 1475: 1469: 1466: 1462: 1458: 1454: 1443: 1439: 1435: 1434: 1429: 1418: 1414: 1410: 1406: 1402: 1400:0-914894-23-4 1396: 1392: 1388: 1383: 1382: 1376: 1372: 1367: 1356: 1352: 1350:0-8104-5490-4 1346: 1342: 1338: 1334: 1333: 1328: 1323: 1320: 1318: 1314: 1310: 1305: 1301: 1297: 1291: 1286: 1273: 1269: 1265: 1260: 1257: 1254: 1250: 1246: 1240: 1235: 1223: 1219: 1215: 1210: 1207: 1204: 1200: 1196: 1192: 1188: 1184: 1180: 1174: 1169: 1156: 1152: 1148: 1143: 1132: 1129:(in German). 1128: 1124: 1117: 1113: 1109: 1108: 1100: 1096: 1092: 1091: 1085: 1082: 1080: 1077: 1075: 1071: 1067: 1062: 1058: 1054: 1050: 1046: 1042: 1026: 1022: 1015: 1011: 1007: 1003: 999: 994: 991: 989: 975: 971: 967: 963: 959: 958: 950: 945: 942: 938: 934: 930: 926: 922: 918: 914: 910: 906: 902: 898: 894: 890: 886: 882: 876: 871: 867: 863: 851: 847: 843: 839: 838: 833: 829: 824: 822: 820: 809: 807:0-8104-5490-4 803: 799: 795: 791: 790: 785: 781: 777: 774: 770: 757: 753: 751: 746: 741: 738: 734: 721: 717: 715: 710: 705: 694: 690: 689: 683: 682: 678: 659: 655: 648: 642: 639: 627: 623: 619: 615: 609: 606: 603: 600: 598: 586: 582: 578: 574: 572:1-55860-496-0 568: 565:. p. 5. 564: 560: 559: 554: 548: 546: 542: 538: 536: 532: 528: 523: 519: 515: 514: 509: 505: 504:Absolute code 490: 486: 479: 478: 470: 467: 460: 456: 453: 450: 447: 445: 442: 440: 437: 434: 431: 429: 426: 424: 421: 419: 416: 414: 411: 409: 406: 404: 401: 400: 396: 391: 387: 383: 380: 376: 371: 367: 364: 359: 355: 354: 350: 346: 344: 340: 332: 327: 323: 320: 317: 316: 315: 309: 307: 305: 297: 295: 289: 287: 285: 284:Windows Vista 281: 277: 273: 268: 261: 259: 257: 252: 250: 246: 242: 238: 235: 231: 228: 224: 220: 216: 208: 206: 203: 200: 196: 192: 188: 180: 178: 176: 172: 168: 164: 157: 155: 153: 149: 145: 141: 137: 133: 128: 126: 122: 118: 114: 110: 106: 101: 91: 88: 80: 70: 66: 60: 59: 53: 48: 39: 38: 33: 19: 2026: 1997:Machine code 1912:. Retrieved 1903: 1884:. Retrieved 1864: 1843:. Retrieved 1823: 1802:. Retrieved 1782: 1763:. Retrieved 1743: 1724:. Retrieved 1704: 1685:. Retrieved 1663: 1644:. Retrieved 1622: 1597: 1591:. Retrieved 1582: 1562: 1556:. Retrieved 1547: 1501: 1495:. Retrieved 1486: 1460: 1446:. Retrieved 1432: 1420:. Retrieved 1380: 1359:. Retrieved 1336: 1330: 1282: 1276:. Retrieved 1267: 1232: 1226:. Retrieved 1217: 1198: 1189:code, since 1165: 1159:. Retrieved 1150: 1135:. Retrieved 1126: 1116:Heise Verlag 1111: 1105: 1099:Heise Verlag 1094: 1088: 1038: 1032:. Retrieved 981:. Retrieved 955: 904: 861: 853:. Retrieved 841: 836: 812:. Retrieved 793: 787: 760:. Retrieved 748: 724:. Retrieved 712: 697:. Retrieved 687: 665:. Retrieved 653: 641: 630:. Retrieved 621: 608: 589:. Retrieved 557: 526: 518:iRMX 86 511: 503: 502: 496:. Retrieved 476: 469: 389: 385: 381:, now 125. . 378: 374: 369: 362: 357: 356:(A) Program 339:Donald Knuth 336: 325: 313: 301: 293: 269: 265: 253: 212: 204: 184: 163:Object files 161: 158:Segmentation 129: 116: 99: 98: 83: 74: 55: 2131:object file 2032:System call 2012:Object code 1963:conventions 1567:'s M80 and 1548:seasip.info 1516:Amstrad PCW 1487:seasip.info 1288: [ 1237: [ 1171: [ 962:Libes, Inc. 873: [ 654:skyfree.org 413:Object file 278:(ASLR), an 69:introducing 32:Renumbering 2261:Categories 2127:Executable 2027:Relocation 1980:Call stack 1914:2020-02-20 1886:2021-11-29 1845:2021-11-29 1804:2020-02-09 1765:2020-02-09 1726:2021-11-29 1687:2020-02-06 1646:2020-02-06 1593:2020-01-26 1558:2020-01-26 1512:.COM files 1497:2020-01-26 1448:2017-08-21 1422:2020-03-20 1361:2019-04-19 1278:2020-02-01 1228:2020-02-01 1161:2020-02-01 1137:2016-11-25 1101:: 124–135; 1083:(33 pages) 1034:2020-01-19 983:2023-11-27 855:2021-12-06 814:2017-08-19 762:2021-12-06 726:2021-12-06 699:2017-08-19 667:2018-10-01 632:2007-01-15 591:2020-01-12 531:FORTRAN 86 498:2020-01-11 461:References 418:Prebinding 100:Relocation 52:references 1970:Alignment 1880:0748-9331 1839:0748-9331 1798:0748-9331 1759:0748-9331 1720:0748-9331 1682:0744-7868 1641:0744-7868 1608:.COM file 1600:Microsoft 1571:'s RMAC. 1565:Microsoft 1508:CP/M Plus 1438:Microsoft 1409:0888-2088 1389:pp.  970:0199-7955 903:code. As 887:(DDT) to 850:1058-6393 535:Pascal 86 375:relocated 270:For both 195:assembler 136:load time 132:link time 121:libraries 77:July 2024 1908:Archived 1665:80 Micro 1624:80 Micro 1587:Archived 1552:Archived 1534:(.RSX). 1491:Archived 1442:Archived 1417:78-21905 1355:Archived 1317:run-time 1300:CP/M 3.0 1272:Archived 1222:Archived 1155:Archived 1131:Archived 1118:: 78–85; 1068:had the 1043:: what 1025:Archived 974:Archived 658:Archived 626:Archived 601:Errata: 585:Archived 581:42413382 489:Archived 439:Rebasing 397:See also 392:, 305. . 237:programs 215:pointers 191:compiler 187:pointers 144:run time 142:, or at 105:absolute 2133:formats 2073:dynamic 1985:Library 1524:overlay 1377:(ed.). 1353:. #22. 1304:bit map 1041:Eubanks 929:NLSFUNC 866:CP/M-80 614:Borland 522:PL/M-86 368:(C) If 333:Example 280:exploit 249:address 223:segment 199:pointer 65:improve 2208:OS/360 2188:Mach-O 2080:Loader 2068:Linker 1990:static 1961:Parts, 1878:  1837:  1796:  1757:  1718:  1714:–17 . 1680:  1639:  1470:  1415:  1407:  1397:  1393:–241. 1347:  1285:MOVCPM 1249:bitmap 1234:MOVCPM 1168:MOVCPM 1057:bitmap 1049:school 968:  931:under 927:, and 870:MOVCPM 848:  804:  737:Mostek 596:Code: 579:  569:  508:Loader 256:loader 230:memory 219:32-bit 148:itself 140:loader 125:memory 113:linker 54:, but 2228:XCOFF 2168:ECOFF 2143:a.out 1955:(ABI) 1874:–19. 1792:–25. 1753:–15. 1583:z88dk 1373:. In 1292:] 1241:] 1199:twice 1175:] 1114:(2). 1097:(1). 1066:Intel 1028:(PDF) 1017:(PDF) 977:(PDF) 952:(PDF) 925:SHARE 919:like 877:] 796:(2). 661:(PDF) 650:(PDF) 492:(PDF) 485:Intel 481:(PDF) 435:(PIC) 2246:.exe 2183:Hunk 2178:GOFF 2153:COFF 2129:and 1876:ISSN 1835:ISSN 1833:–7. 1794:ISSN 1755:ISSN 1716:ISSN 1678:ISSN 1637:ISSN 1604:MP/M 1506:and 1504:MP/M 1468:ISBN 1413:LCCN 1405:ISSN 1395:ISBN 1345:ISBN 1309:8080 1298:and 1296:MP/M 1245:CP/M 1195:MP/M 1187:8080 1181:and 1179:BDOS 1112:1987 1095:1987 1061:CP/M 1045:Gary 966:ISSN 921:KEYB 917:TSRs 901:PL/M 846:ISSN 802:ISBN 750:BYTE 714:BYTE 577:OCLC 567:ISBN 533:and 386:SUBR 370:SUBR 358:SUBR 302:The 272:DLLs 213:Far 111:. A 2218:PEF 2203:OMF 2173:ELF 2163:COM 2158:CMD 2148:AIF 1528:GSX 1520:OVL 1391:237 1313:Z80 1203:map 1183:CCP 913:HMA 895:of 881:TPA 773:TDL 771:by 735:by 343:MIX 341:'s 245:EXE 234:DOS 193:or 2263:: 2213:PE 2198:NE 2193:MZ 1902:. 1872:13 1863:. 1822:. 1790:20 1781:. 1742:. 1712:10 1703:. 1674:98 1672:: 1662:. 1633:38 1631:: 1621:. 1596:. 1585:. 1581:. 1561:. 1550:. 1546:. 1500:. 1489:. 1485:. 1436:. 1411:. 1403:. 1335:. 1329:. 1290:pl 1281:. 1266:. 1239:pl 1231:. 1216:. 1173:pl 1164:. 1149:. 1125:. 1037:. 1000:; 954:. 923:, 907:, 875:pl 840:. 792:. 786:. 775:.) 747:. 739:.) 711:. 691:. 652:. 620:. 583:. 575:. 544:^ 501:. 483:. 390:ST 379:ST 363:ST 227:KB 173:, 169:, 2223:X 2119:e 2112:t 2105:v 1945:e 1938:t 1931:v 1917:. 1889:. 1848:. 1831:3 1807:. 1768:. 1751:9 1729:. 1690:. 1649:. 1522:( 1476:. 1451:. 1425:. 1364:. 1337:3 1140:. 986:. 858:. 817:. 794:3 765:. 729:. 702:. 670:. 635:. 594:. 243:( 217:( 90:) 84:( 79:) 75:( 61:. 34:. 20:)

Index

Relocation (computer science)
Renumbering
references
inline citations
improve
introducing
Learn how and when to remove this message
absolute
position-independent code
linker
libraries
memory
link time
load time
loader
run time
itself
zero address arithmetic
Object files
code segment (.text)
initialized data segment (.data)
uninitialized data segment (.bss)
pointers
compiler
assembler
pointer
pointers
32-bit
segment
KB

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