diff options
| author | iximeow <me@iximeow.net> | 2026-05-24 00:39:00 +0000 |
|---|---|---|
| committer | iximeow <me@iximeow.net> | 2026-05-24 00:39:00 +0000 |
| commit | ad82512ae89eeb840df9021148337c01ad0fa873 (patch) | |
| tree | af328c258527bfd7fafaec1c54b14651332e06e5 /CHANGELOG | |
| parent | 8a5775c618a4810edba952bd152f158f95b60096 (diff) | |
support 16-bit and 32-bit VM configurations
Diffstat (limited to 'CHANGELOG')
| -rw-r--r-- | CHANGELOG | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -1,3 +1,26 @@ +## 2.1.0 + +asmlinator now supports creating protected-mode and real-mode VMs. + +the new Vm::create_by_settings consumes an (also new) VmSettings structure +which declares the VM's base memory size and desired `IsaMode`. `Vm::create` is +now a short-hand for +``` +Vm::create_by_settings(VmSettings::new(mem_size, IsaMode::Protected)) +``` + +control structures are laid out differently in 32-bit and 16-bit modes. + +in the protected-mode case, PSE is set and the page table is used to map memory +as 4MiB pages. segment limits are set to their maximum values. + +in the real-mode case, a second code segment is established for the IDT, which +is still at the linear address 0x2000. code, being placed at the 4096th byte +before the end of memory, with the second code segment covering this lower +region of memory. `cs`, `ds`, and other segment selectors are configured to +address the last 4096 bytes of memory with code placed at (and `ip` set to) +address 0 in this segment. + ## 2.0.0 asmlinator now sets up VMs to be able to execute SSE, AVX, and AVX512 |
