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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.