小编vit*_*lho的帖子

是否可以使用 INIT-SIPI-SIPI 序列唤醒所有内核都处于实模式的英特尔内核?

我正在使用 DOS 启动并启动我的应用程序test.exe。该程序以实模式启动 BSP(引导处理器)并访问 APIC 表FEE0:0000以启用偏移量处的 SVI(伪向量中断)0x0F0INIT-SIPI-SIPI使用ICR_low(偏移量 0x300)和ICR_high(偏移量 0x310)发送序列。BSP 进入循环jmp $以停止执行并让 AP(应用处理器)在地址处执行代码0000:8000并打印一个字符。

似乎消息没有发送到 AP,因为我没有看到它们中的任何一个在显示器上打印任何内容。

我在实模式下使用 FreeDos。编译我使用FASM(平面汇编程序)

我使用了OsDev手册,其中包含我用来测试的代码(经过一些修改)尽可能简单,看看我是否可以让它工作。我还参考了英特尔程序员手册和其他规范以及 Code Project 中的教程。

我只是想唤醒 AP 并执行一些简单的代码。我发现的所有示例都进入了虚幻模式、保护模式、长模式或专注于多核处理。我写这段代码只是为了理解它是如何工作的。

我的代码是:

    format MZ  

    USE16 

    start:
    mov ax, cs
    mov ds, ax
    mov es, ax
    mov ss, ax
    xor sp, sp
    cld
    ;Clear screen                
       mov ax, 03h
       int 10h
    ;Move payload to the desired address
       mov …
Run Code Online (Sandbox Code Playgroud)

x86 assembly multicore dos fasm

7
推荐指数
1
解决办法
688
查看次数

标签 统计

assembly ×1

dos ×1

fasm ×1

multicore ×1

x86 ×1