Repository navigation
Memory Additional Table Lifetimes
Merged main d4350b60, reconstructed release64 tree 1277f2b7bf45a0992ef56d45d55815396d46ac8d. Eleven additional global bodies total 2,996 bytes; four additional structure bodies are overlapping type descriptions. With the earlier proofs this provides 59 exact global/table sizes and eight structure-body sizes. No firmware, test procedure or rig was changed.
Actual sizeof constants were emitted from copied production translation units with their recorded release64 compiler flags, disabling LTO only to retain the constants. Linked addresses come from the unchanged shipped image. Existing align annotations generated ignored-attribute warnings in the measured IDE/sized-data copies; these results prove body size, not requested or actual alignment.
| Object | Exact bytes | Linked placement or type | Measurement translation unit | Lifetime / reduction boundary |
|---|---|---|---|---|
XeEventTable |
512 |
.bss at 0x84060700
|
ntoskrnl/xb/xbe.c |
64 public-handle/event pairs; live create/lookup/close operations. Not a boot-only array. |
XBE_EVENT_ENTRY |
8 | Type only | ntoskrnl/xb/xbe.c |
One handle/event pair; embedded 64 times in XeEventTable. Do not add a second allocation charge. |
HalpIDTUsageFlags |
256 |
.bss at 0x8405f820
|
hal/halx86/generic/usage.c |
256 one-byte vector flags. Registration/translation consumers and any linked reporting loops must be bounded before shrinking. |
HalpIDTUsage |
512 |
.bss at 0x8405f620
|
hal/halx86/generic/usage.c |
256 two-byte vector records. Same admission/reporting constraint; shares pages with live data. |
IDTUsageFlags |
1 | Type only | hal/halx86/generic/usage.c |
One flag-byte element; already included in the array charge. |
IDTUsage |
2 | Type only | hal/halx86/generic/usage.c |
One two-byte element; already included in the array charge. |
HalpSpecialDismissTable |
64 |
.data at 0x840525c0
|
hal/halx86/pic/pic.c |
16 live PIC dispatch pointers, changed when interrupt mode changes; must stay writable. |
HalpSpecialDismissLevelTable |
64 |
.rdata at 0x840577e0
|
hal/halx86/pic/pic.c |
16 level-mode dispatch pointers with readonly runtime use in the audited source, copied into the writable table; eligible only for qualified readonly backing. |
IopFileMapping |
16 |
.rdata at 0x84053a80
|
ntoskrnl/io/iomgr/iomgr.c |
Public/internal generic file access mapping; 16 bytes, not its 224-byte next-symbol span. |
DesSBox |
512 |
.rdata at 0x840558c0
|
ntoskrnl/xb/crypto.c |
8 × 64 immutable substitution bytes used by runtime DES operations; not demonstrated unused. |
IdexChannelObject |
264 |
.bss at 0x840625c0
|
ntoskrnl/xb/ide.c |
Public mutable storage channel ABI with live queue/interrupt/timer/completion state. |
NX_IDE_CHANNEL |
264 | Type only | ntoskrnl/xb/ide.c |
Structure type of IdexChannelObject; same 264-byte body, not an additional global. |
NxkEepromImage |
256 |
.bss at 0x84063820
|
ntoskrnl/xb/eeprom.c |
Mutable 256-byte EEPROM image used for query/update and checksum operations. |
XboxAlternateSignatureKeys |
256 |
.bss at 0x84064a40
|
ntoskrnl/xb/titlekeys.c |
Sixteen per-title 16-byte keys; initialized for each title, exported mutable data. |
XePublicKeyData |
284 |
.bss at 0x840648a0
|
ntoskrnl/xb/sizeddata.c |
284-byte exported compatibility body. Zero contents do not establish safe deletion: clients may read its specified extent. |
HalpSpecialDismissLevelTable is 64 bytes, while the next-symbol interval was 288 bytes. IopFileMapping is 16 bytes, while its next-symbol interval was 224 bytes. The 224- and 208-byte differences contain intervening anonymous content/alignment; they are not recovered memory and cannot be assigned to the named objects. These corrections are why the inventory distinguishes exact body size from enclosing address spans.
The new global extents were checked for nonoverlap against every existing compiler extent and sizeof proof. Together they raise proved resident content from 364,007 to 367,003 bytes, leaving 36,253 bytes unresolved inside the same 403,256-byte resident section content. Physical backing remains 102 pages / 408 KiB. More attribution does not itself reduce RAM.
The 256-entry usage arrays retain 768 bytes. A 64-entry representation would retain 192 bytes, a 576-byte declaration-level difference, provided all writers and reporting loops use the new domain. That is not a demonstrated page saving. The owned vector audit found translation and connect paths that can currently admit vectors outside the installed 64-entry IDT. Shrinking the arrays or extra stubs before correcting those admission boundaries would be unsafe. See Memory-Interrupt-Vector-Lifetimes.
further-sizeof.json retains actual compiler commands, defining-source SHA and linked locations; the corresponding copied sources and emitted assembly stay in the local lab. cache-offset-proof.json additionally records nine exact offsets in NXC_BLOCK, used to identify runtime cache ownership in Memory-Allocation-Object-Ledger. Type sizes and dynamic instances must not be added to static backing a second time.
The IDTUsageFlags and IDTUsage declarations come from hal/halx86/include/halp.h:189–198; their measurement translation unit is generic/usage.c. Reporting helpers are INIT-placed; source presence alone does not prove a resident reporting consumer. The level-dismiss pointer array is not declared const, despite its linked readonly section and no runtime writes found in this audit.
Source baseline: SpiritBoot 27149596, Roswell 1569e2e8 plus ordered patches. See Clean-Room-and-Validation for evidence boundaries and Export-Index for complete export coverage.
- Retail-5838-BIOS-Size-and-Layout
- Retail-5838-Function-Ledger
- Retail-5838-Public-API-Comparison
- Retail-5838-Data-and-Physical-Atlas
- Retail-5838-Unclassified-Image-Ranges
- SpiritBoot-Main-Emitted-Extent-Ledger
- SpiritBoot-Main-Physical-Ownership
- SpiritBoot-Latest-Candidate-Extent-Ledger
- Memory-Reduction-Targets
- Memory-Comparison-and-Removal-Guide
- Memory-Three-BIOS-Public-API-Comparison
- Memory-Reduction-Workbook — physical-owner challenge ledger, game headroom, allocation pressure and removal decisions.
- Memory-Pool-Reuse-Cost-and-Attribution — current 64 KiB candidate saving, eight-run allocator costs and Conker attribution limits.
- Kernel-Overhaul-Size-and-Performance — lower-level subsystem specialization, runtime roots, performance work and focused PR delivery.