lin*_*ker 0 c arch-linux linux-kernel stack
我在我的一台计算机上运行 Arch Linux,64 位最新更新。我目前是一名计算机科学专业的学生,昨天我们进行了一项测试,我们将使用链表实现动态堆栈。我现在有兴趣了解我的计算机中的堆栈是如何构建的,但是我无法在我的 Arch Linux 计算机上找到任何带有注释的“stack.c”。堆栈编程位于何处?我了解堆栈如何创建内存,但我想实际查看代码并可能自己玩弄它。
术语“堆栈”被重载了。一些可能的解释包括:
在 (3) 方面,为程序中的每个正在运行的线程分配了一块“内存”。当函数在这些线程中被调用和返回时,它们从与线程关联的堆栈中推入和弹出“堆栈帧”(运行时激活堆栈上的“元素”)。堆栈帧中包含的内容的细节因硬件架构而异。通常,堆栈帧包含:
由于参数的数量、函数内局部变量的数量和大小以及需要保存的寄存器因函数而异,因此堆栈帧没有固定大小。
无需stack.c
检查,因为管理活动记录堆栈的代码是由逐个函数构建程序的编译器生成的。编译器生成触发函数调用的指令。当编译器生成程序指令时,它知道:
编译器遵循一套完善的硬件架构规则(调用约定),以便由不同编译器构建的不同部分组成的程序可以互操作。
请注意,虽然运行时激活堆栈 (3) 是“堆栈”抽象 (1) 的实现,但除了推送/弹出记录的概念外,它与基于链接的实现几乎没有相似之处。
归档时间: |
|
查看次数: |
94 次 |
最近记录: |