2010-04-26 46 views
-1

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

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

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

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

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

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

回答

0

我并不完全遵循你的任何一个问题,但我会猜测。

对于第一个,你问如何改变可执行文件在内存中的位置? ELF文件具有链接器首先尝试使用的首选偏移量,但如果基本偏移量不可用,则加载程序通常可以随意将各部分放置在任何位置。如果图像不可重定位且首选偏移量不可用,则加载程序将失败并且程序将不会运行

至于第二个问题,您想修改程序集,以便代码位于不同的区域中?如何做到这一点取决于你正在使用的汇编程序;在燃气使用section伪操作:

.section new-section-name 

下该指令将在指定部分

+0

喜迈克尔Mrozek代码, 似乎注释对词约束限制。 我把我的怀疑放在我原来的帖子上,希望你能解释一下。 谢谢。 – 2010-04-26 07:01:36