|-----------------------------|------------------|-----------------------|
| Executable file header | Text Size | 300 hex |
|-----------------------------|------------------|-----------------------|
| | Data Size | 50 hex |
|-----------------------------|------------------|-----------------------|
| Text segment | Address | Instruction |
|-----------------------------|------------------|-----------------------|
| | 0040 0000 hex | LDR r0, 8000hex (r3) |
|-----------------------------|------------------|-----------------------|
| | 0040 0004 hex | BL 00 00EChex |
|-----------------------------|------------------|-----------------------|
| | ... | ... |
|-----------------------------|------------------|-----------------------|
| Data Segment | Address | |
|-----------------------------|------------------|-----------------------|
| | 1000 0000hex | (X) |
|-----------------------------|------------------|-----------------------|
此表说明了链接程序如何通过更新patterson&Hennessy在p139上的《计算机组织与设计4E》中的指令中的地址来连接两个目标文件。
关于如何确定“ LDR r0,8000hex(r3)”的负载偏移量,它说程序使用全局指针作为基址寄存器。并假设r4初始化为1000 8000hex,我们将8000hex放置在LDR的地址字段中的地址40 0000 hex处。
有人可以解释为什么当r4与r3无关时,为什么将8000hex作为偏移量?还是我误解了一些概念?