assembly - 在同一程序集程序中,堆,堆栈和数据段?

  显示原文与译文双语对照的内容
141 5

我知道,程序集程序分为 two- 1 ) 代码 2 ) 数据。现在,在cc++上代码说明,代码被加载到内存中,然后CPU开始执行代码,一个指令。我的问题是:1.c 代码存储在哪里?我是说,当我在 Visual Studio 中运行程序时,是加载到them-堆中的代码堆栈。2.内存实际上分为 Stack,Heap和 Date,但是当CPU执行程序时,CPU会执行程序,它们是汇编程序,或者是汇编程序,它们都是具有相同数据区域的程序集程序,它们都是由一个或者多个程序组成?

** 让我添加这个问题,也许它会阐明我的意图:启动C 程序时,代码( 机器指令) 加载到内存中。这是一个程序程序。但是记忆是如何发生的?我是说,像堆栈。数据段。等等 这样的不同内存段如何修改汇编程序?

时间:原作者:0个回答

121 0

在对象和可执行文件中,或者节是相邻的divisions,与书中的章节非常相似。堆栈和bss节不存在于文件中,但在运行时创建。

节的点主要是将程序划分为操作系统可以以不同方式保护的区域。为了便于 必须在页面边界上开始,并且在内存中连续。

基本的("重要") 部分是。are 。

这是一个可以在多个进程或者线程之间共享的代码,它还可以在多个进程或者线程之间共享。

这将映射这个 R/w,并且不共享它

bss - 这里部分由零初始化数据组成。

通常从程序中分离- 通常从较高的地址向下向下增长

最后两节不在可执行文件中,因为它们不需要任何 intiialization 。

如果你在询问它们是如何实现的,那么汇编器和链接器创建一个table-of-contents并在书中写出一些章节。然后,操作系统分别读取它们,并将它们放在地址空间的不同部分。

像系统和 Windows 这样的细节和术语是不同的,但是原则是相同的。

1.是的,copy-on-write 允许共享数据,类型如下。

原作者:
...