【发布时间】:2011-03-25 13:22:56
【问题描述】:
我对汇编略知一二,通用寄存器有 4 或 8 个左右。计算机上的所有程序如何使用这么多的寄存器,尤其是多线程和所有东西?
【问题讨论】:
-
我喜欢将寄存器视为处理器的局部变量。我不倾向于在当前函数的范围内有大量变量。它们中的大多数都在内存中的某个地方,在程序的其他部分。
-
@Merlyn:没错,但可能有点误导,因为本地变量(在没有编译器优化的情况下)通常存储在堆栈中。
-
@bcat:是的,这个概念并不完美。不同的架构也会有不同的行为(尽管这可以被视为编译器优化)。
-
@bcat:我发现最有用的心智模型是本地 vars = 可以保存在寄存器中的值,如果您的 regs 用完,您可以将它们溢出到堆栈中。在调试模式下编译 comp 总是为了一致的调试。 (你说得对,C 语言模型给每个对象一个地址,除了
registervars,但实际上在 asm 中 programming 我建议的是正确的开始方式。)
标签: multithreading assembly cpu-registers