一个进程应该自己创建一个自己的堆栈是不是很糟糕?

时间:2013-12-03 06:26:22

标签: assembly low-level osdev

进程应该自己创建自己的堆栈是不是很糟糕?如果内核不想这样做。

喜欢这里

_start:
    mov $stack_head, %rsp
    jmp main

.data
.align 8
stack:
    .quad 0
    .quad 0
    .quad 0
    .quad 0
stack_head:

或使用malloc系统调用。

2 个答案:

答案 0 :(得分:1)

不,不是这样的。有些系统甚至需要它。 但是,如果可能的话,遵循惯例总是一个好主意。


我认为为程序准备另一个堆栈并不危险 - 即使在linux中也是如此。 Linux无论如何都设置了一个堆栈(除非你明确说“不,谢谢”)。但最好小心不要与堆栈混淆。

对于Linux或Windows,它不是一个好的和美好的想法,因为它违反了约定。还有一些(不必要的)麻烦。

在许多RTOS中,您必须自己设置堆栈。

答案 1 :(得分:0)

有些操作系统甚至需要像这样设置堆栈。

然而malloc()不起作用,因为像malloc()这样的函数通常需要一个已设置的堆栈指针。

在Linux下 - 例如 - 这样做是一个非常糟糕的主意,因为Linux会观察堆栈指针并在需要时自动分配更多内存。如果像这样移动堆栈指针,可能会导致程序崩溃。