如何在内存中存储程序集

时间:2010-04-26 06:18:50

标签: macos assembly

我有一个关于如何将汇编语言存储在内存中的问题,当我在汇编中编译C代码并运行“step”时,我可以看到每条指令的地址,但有没有办法改变内存中代码的起始地址?

第二个问题是,我可以将汇编代码分成两部分吗? 也就是说,如何将这两个部分存储在不同的内存部分? 有没有办法做到这一点?

我很好奇机器如何存储汇编代码。 我正在研究MACBOOK Pro,二核心。

对于第一个问题,我们可以更改偏移值吗?或者链接器和加载器不能由用户控制?我的垃圾与你的答案相混淆,似乎我们无法改变它?

对于第二个问题,我认为你所说的是“输入部分”,即使你的代码中有很多“.text”输入部分,在汇编之后,它们将成为一个“.text”“输出部分”。 输出部分是存储在内存中的实际代码。 我想知道我是否可以控制其地位。

我正在使用DSP汇编的知识,我认为机制是相同的。

1 个答案:

答案 0 :(得分:0)

我没有完全遵循你的任何一个问题,但我猜。

对于第一个,您问的是如何更改可执行文件在内存中的位置? ELF文件具有链接器首先尝试使用的首选偏移量,但如果基本偏移量不可用,则加载器通常可以自由地将这些部分定位在任何位置。如果图像不可重定位且首选偏移量不可用,则加载程序将失败并且程序将无法运行

至于你的第二个问题,你想修改程序集,所以代码将在不同的部分?怎么做取决于你正在使用的汇编程序;在气体中你使用section伪操作:

.section new-section-name

该指令后面的代码将在指定的部分