NJU-ProjectN / nemu

NJU EMUlator, a full system x86/mips32/riscv32/riscv64 emulator for teaching
Other
858 stars 184 forks source link

有关pmem_read的问题 #90

Closed Fros1er closed 6 months ago

Fros1er commented 6 months ago

https://github.com/NJU-ProjectN/nemu/blob/32c0ce51a3c36e4676784aa10948e7fc84c6b19e/src/memory/paddr.c#L27-L33

这里把物理地址加了一个CONFIG_MBASE的偏移,但是物理地址应该是从0开始的吧。。感觉应该在虚拟地址那里做这个操作?

btw,我不是nju的,只是在随便写写

sashimi-yzh commented 6 months ago

内存的物理地址不一定是从0开始的, 取决于内存位于物理地址空间中的哪一段.

Fros1er commented 6 months ago

内存的物理地址不一定是从0开始的, 取决于内存位于物理地址空间中的哪一段.

明白了,谢谢。还有一个问题,这个过程是由cpu规定的吗?如果是的话,os是不是某种程度需要上对每一家的cpu做适配?

sashimi-yzh commented 6 months ago

你可以搜索一下cpu reset vector, 了解更多的相关内容.

Fros1er commented 6 months ago

其实我想问的是,操作系统该如何管理分布在物理地址空间中不连续分布的内存和mmio设备。不过在搜索的时候想起来了,我问的那个东西是device tree。 再次感谢您的解答。