Use only relative addressing, and require the OS to set a base register to the beginning of the code. This is nice for a couple reasons. All relative code can also be relocated while it's running. Note that relocation without protection is dangerous. Unless fairly difficult precautions are taken to prevent a program from doing so, it is possible to create an absolute addressing instruction, and use it to access some other process's memory.
Memory protection prevents the access when it's made.
Converted from groff by Ted Faber Please mail me any problems or comments.