我需要在GAS中初始化堆栈吗?

发布于 2024-11-10 11:13:32 字数 268 浏览 1 评论 0原文

你好!目前我正在学习装配基础知识。早些时候我使用 TASM 和 Intel 语法。在那里我必须以某种方式初始化堆栈。 但现在我使用 GNU 汇编器和 AT&T 语法。我查看了很多示例,没有看到任何堆栈的声明/初始化。我想知道我是否必须这样做?或者,也许,它是在没有我帮助的情况下制作的?如果是这样,它到底是如何自动初始化的?擦除数据段中的重要信息是否存在风险?我也没有注意到任何有关堆栈的指令。

感谢您提前的回答! 哦,还有一件事:有没有关于类 Unix 系统的 ASM (GAS) 编程的好书?

Hallo! Currently I'm learning basics of assembly. Earlier I was using TASM and Intel-syntax. There I had to initialize stack in some ways.
But now I'm using GNU Assembler and AT&T syntax. I looked through lots of examples and saw no any declaration/initialization of stack. I wonder if I have to do it? Or, may be, it's made without my help here? If is so, how exactly is it initialized automatically? Are there risks to rub important info in data-segment? I didn't also notice any directives concerning stack.

Thanks for your answers beforehand!
Oh, one more thing: are there any good books concerning programming in ASM (GAS) for Unix-like systems?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里兽 2024-11-17 11:13:32

具有虚拟内存的操作系统处理堆栈的方式与不具有虚拟内存的操作系统的处理方式略有不同。

  • 无VM(例如DOS、μClinux!MMU):您为堆栈保留一些物理空间。在 DOS 中,这取决于您使用的内存模型,对于较大的内存模型,您将分配一些内存并将 SS(堆栈段)指向它。在 µClinux 中,您将在可执行文件格式标头的字段中保存堆栈大小,请参阅bFLT 格式为例。
  • VM → 堆栈动态增长,直至达到可配置的限制(请参阅 Linux 上的 ulimit -s)。由于每个进程都有自己的虚拟地址空间,因此堆栈和任何其他映射的虚拟内存区域之间存在大量空间。

An OS with Virtual Memory handles the stack somewhat differently than how an OS without Virtual Memory handles it.

  • No VM (e.g. DOS, µClinux !MMU): you reserve some physical space for the stack. In DOS it depends on the memory model you use, for larger memory models you will allocate some memory and point SS (the stack segment) to it. In µClinux you will save the stack size in a field of the executable file format's header, see the bFLT format for an example.
  • VM → the stack grows dynamically, up to a configurable limit (see ulimit -s on Linux). Since each process has its own virtual address space, there is a lot of space between the stack and any other mapped virtual memory area.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文