小编joe*_*ejo的帖子

为什么在PUSH指令执行PUSH BX之前执行PUSH CX

我一直在研究x86汇编语言,并且问题来自PUSHA指令.

据我所知,Pusha与PUSH AX,CX,DX,BX,原始SP,BP,SI和DI相同.
我想知道为什么在PUSH指令执行PUSH BX之前执行PUSH CX.

硬件架构有什么理由吗?

cpu x86 assembly cpu-architecture cpu-registers

2
推荐指数
1
解决办法
1403
查看次数

为什么我的内存检查代码不能正常工作

我正在尝试实现简单的操作系统,现在必须实现内存管理.

首先,我们输入简单的代码来检查内存大小,如下所示.

我遇到的问题是这个函数的结果取决于增量大小.

如果我将增量​​设置为1024,则此函数返回640Kb.
但是,如果我将增量​​设置为1024*1024,则此功能返回120Mb.
(我的系统(bochs)的内存设置为120MB.)

我检查了优化选项和A20门.

有谁知道为什么我的功能不能正常工作?

unsigned int memtest_sub(unsigned int start, unsigned int end)
{
    unsigned int    i;  
    unsigned int*   ptr;
    unsigned int    orgValue;   
    const unsigned int  testValue = 0xbfbfbfbf;

    for (i = start; i <= end; i += 1024*1024) {
        ptr = (unsigned int*) i;
        orgValue = *ptr;
        *ptr = testValue;
        if (*ptr != testValue) {
            break;
        }   
        *ptr = orgValue;
    }   
    return i;
}
Run Code Online (Sandbox Code Playgroud)

c memory operating-system memory-management

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