Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 为什么重定位表只包含相对地址?_Assembly_Mips_Symbols_Relocation - Fatal编程技术网

Assembly 为什么重定位表只包含相对地址?

Assembly 为什么重定位表只包含相对地址?,assembly,mips,symbols,relocation,Assembly,Mips,Symbols,Relocation,我正在学习一个类的汇编程序,我正在努力找到一个清晰的解释,解释为什么重定位表只包含一个相对地址。为什么重新定位表需要相对地址?理论上它能指向绝对地址吗 谢谢 绝对地址本质上不会改变,也不需要重新定位。那么,你为什么需要为他们准备一个条目呢?你想用它们做什么?@Jester引用维基百科告诉我的内容,如果“表中的每个条目……都是指向目标代码中绝对地址的指针,当加载程序重新定位程序时,必须更改该地址,以便它引用正确的位置,”绝对地址是否可以在运行时存储、更改或确定?或者相对地址就是指向绝对地址的指针?

我正在学习一个类的汇编程序,我正在努力找到一个清晰的解释,解释为什么重定位表只包含一个相对地址。为什么重新定位表需要相对地址?理论上它能指向绝对地址吗


谢谢

绝对地址本质上不会改变,也不需要重新定位。那么,你为什么需要为他们准备一个条目呢?你想用它们做什么?@Jester引用维基百科告诉我的内容,如果“表中的每个条目……都是指向目标代码中绝对地址的指针,当加载程序重新定位程序时,必须更改该地址,以便它引用正确的位置,”绝对地址是否可以在运行时存储、更改或确定?或者相对地址就是指向绝对地址的指针?谢谢,如果这是一个奇怪的问题,我很抱歉。你问的问题还不完全清楚。如果您自己写了一个绝对地址,那么您希望该地址保持不变。例如,如果您知道某个设备位于地址
foo
,则无论您的程序重新定位到何处,您都希望该地址保持不变。但是,如果您只是引用将由符号重新定位的内容,并且生成的指令恰好使用了绝对地址,则需要重新定位条目。所以在这个意义上,是的,你可以有一个绝对地址的迁移条目。这有帮助吗?:)PECOFF和ELF都支持“绝对”重定位(分别是IMAGE\u REL\u xxx\u absolute和R\u xxx\u NONE类型),但Jester的评论表明,这些类型的重定位没有任何作用。链接器忽略了它们。@Jester确实忽略了,谢谢!绝对地址本质上不会改变,也不需要重新定位。那么,你为什么需要为他们准备一个条目呢?你想用它们做什么?@Jester引用维基百科告诉我的内容,如果“表中的每个条目……都是指向目标代码中绝对地址的指针,当加载程序重新定位程序时,必须更改该地址,以便它引用正确的位置,”绝对地址是否可以在运行时存储、更改或确定?或者相对地址就是指向绝对地址的指针?谢谢,如果这是一个奇怪的问题,我很抱歉。你问的问题还不完全清楚。如果您自己写了一个绝对地址,那么您希望该地址保持不变。例如,如果您知道某个设备位于地址
foo
,则无论您的程序重新定位到何处,您都希望该地址保持不变。但是,如果您只是引用将由符号重新定位的内容,并且生成的指令恰好使用了绝对地址,则需要重新定位条目。所以在这个意义上,是的,你可以有一个绝对地址的迁移条目。这有帮助吗?:)PECOFF和ELF都支持“绝对”重定位(分别是IMAGE\u REL\u xxx\u absolute和R\u xxx\u NONE类型),但Jester的评论表明,这些类型的重定位没有任何作用。链接器忽略了它们。@Jester确实忽略了,谢谢!