【问题标题】:What does 0xa55a mean in cga_init() in xv6 source code?xv6 源代码中的 cga_init() 中的 0xa55a 是什么意思?
【发布时间】:2018-10-18 02:56:12
【问题描述】:

0xa55a 在这里是什么意思?

代码:

*cp = (uint16_t) 0xA55A;   
if (*cp != 0xA55A) {      /* 0xa55a means that? */
cp = (uint16_t*) (KERNBASE + MONO_BUF);
    addr_6845 = MONO_BASE;
} 

【问题讨论】:

    标签: c operating-system xv6


    【解决方案1】:

    此代码测试cp 是否为可写地址以确定模式应为CGA 还是MONO。如果写入不起作用,那么我们就不能使用这部分内存。要写的东西(垃圾)应该是任意的。据我所知,它没有特殊含义

    在此之前,程序将cp 的值保存在was 中,这样垃圾就不会污染内存。

    【讨论】:

    • 也就是说0xa55a可以是任意值吗?
    • @AlexLiu 基本上是的!我不知道您应该避免的任何数字。直觉上你不会选择像 0 这样的东西。只需使用一个看似随机的数字。我很高兴知道实验是否显示相反的结果!
    • 是的,我将值更改为 0x0101 并且它可以工作。哈哈,非常感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2015-05-09
    相关资源
    最近更新 更多