Questions tagged «computer-architecture»

4
运行计算机程序会怎样?
我知道一般的理论,但我不适合细节。 我知道程序驻留在计算机的辅助存储器中。一旦程序开始执行,它将被完全复制到RAM中。然后,处理器一次检索几条指令(取决于总线的大小),将它们放入寄存器中并执行它们。 我也知道计算机程序使用两种内存:堆栈和堆,它们也是计算机主内存的一部分。堆栈用于非动态内存,堆用于动态内存(例如,与newC ++中的运算符相关的所有内容) 我不明白的是这两件事是如何联系的。堆栈在什么时候用于执行指令?指令从RAM到堆栈,再到寄存器?

3
为什么JVM基于堆栈,而Dalvik VM基于寄存器?
我很好奇,为什么Sun决定使JVM基于堆栈,而Google决定使DalvikVM基于寄存器? 我想JVM不能真正假设目标平台上有一定数量的寄存器可用,因为它应该独立于平台。因此,它只是将寄存器分配等推迟到JIT编译器。(如我错了请纠正我。) 所以Android的人想:“嘿,那效率低下,让我们马上去注册虚拟机吧……”?但是,等等,有多个不同的android设备,Dalvik瞄准了多少个寄存器?Dalvik操作码是否为一定数量的寄存器进行了硬编码? 市场上当前所有的Android设备是否都具有相同数量的寄存器?还是在dex加载期间执行了寄存器重新分配?所有这些如何融合在一起?

4
“性能统计”结果中的停滞周期前端和停滞周期后端是什么?
有人知道perf stat结果中的stalled -cycles-frontend和stalled-cycles-backend是什么意思吗?我在互联网上搜索,但没有找到答案。谢谢 $ sudo perf stat ls Performance counter stats for 'ls': 0.602144 task-clock # 0.762 CPUs utilized 0 context-switches # 0.000 K/sec 0 CPU-migrations # 0.000 K/sec 236 page-faults # 0.392 M/sec 768956 cycles # 1.277 GHz 962999 stalled-cycles-frontend # 125.23% frontend cycles idle 634360 stalled-cycles-backend # 82.50% …

5
当空指针不全为零时如何正确编写C / C ++代码
正如comp.lang.c常见问题解答所说,在某些体系结构中,空指针并非全为零。所以问题是什么实际上检查以下构造: void* p = get_some_pointer(); if (!p) return; 我是在p与机器相关的空指针进行比较p,还是在与算术零进行比较? 我应该写 void* p = get_some_pointer(); if (NULL == p) return; 而是为这种架构做好准备,还是只是我的偏执?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.