From 87d4e359d896e9f4c391addd5a22e2f6b10cdf36 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 26 Aug 2026 19:23:30 +0800 Subject: [PATCH] =?UTF-8?q?debug(main):=20=E8=BD=AC=E5=82=A8=20BootInfo=20?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E5=A4=84=E5=8E=9F=E5=A7=8B=2088=20=E5=AD=97?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BootInfo=0xde20d00 非 NULL 但字段全 0。转储该地址原始字节,区分内存确实全 0 (bootloader 写入未生效/重定位缺失)还是内核读错偏移(布局不匹配)。 --- VKernel/Kernel/main.vp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/VKernel/Kernel/main.vp b/VKernel/Kernel/main.vp index df5894f..a7d8ed5 100644 --- a/VKernel/Kernel/main.vp +++ b/VKernel/Kernel/main.vp @@ -142,6 +142,18 @@ class ViperKernel: t.CUInt64T(BootInfo), BootInfo.MemmapAddr, BootInfo.MemmapSize, BootInfo.MemmapDescSize, BootInfo.framebuffer_addr) serial.puts(c.Addr(_dbbuf)) + # [DBG] 转储 BootInfo 地址处原始 88 字节(用后移除) + _dbraw: t.CArray[t.CChar, 16] + _dbi: t.CInt = 0 + while _dbi < 88: + if (_dbi % 16) == 0: + viperlib.snprintf(c.Addr(_dbraw), 16, "\n[DB] %04x:", _dbi) + serial.puts(c.Addr(_dbraw)) + _dbv: t.CUInt8T = c.Deref(t.CUInt8T(t.CUInt64T(BootInfo) + t.CUInt64T(_dbi), t.CPtr)) + viperlib.snprintf(c.Addr(_dbraw), 16, " %02x", _dbv) + serial.puts(c.Addr(_dbraw)) + _dbi += 1 + serial.puts("\n[DB] dump end\n") if BootInfo is not None: paging.init(BootInfo.MemmapAddr, BootInfo.MemmapSize)