小编Dav*_*ave的帖子

实模式,中断向量替换崩溃

我正在尝试更多地了解系统如何真正在顶部所有漂亮的图形下工作.所以我现在正在使用BIOS在启动时加载的512字节内存,在我猜的时候真的不能称之为引导加载程序.无论如何,我正在替换一个中断向量,但有问题.更换中断09h(键盘)后,它正常工作,在按键上输出"Memory messing".但没什么.之后的每一个按键都什么都不做.我不知道系统是否崩溃,或者我是否遗漏了我的处理程序中的内容,这里是代码:

jmp start
times 100 db 0 ; Cleared space for stack

start:
xor ax, ax
mov ax, start
sub ax, 80
mov sp, ax 

mov al, 0x09   ; Interupt number
mov bl, 4
mul bl
mov bx, ax
xor ax, ax
mov es, ax
mov [es:bx], word prints ; My interupt handler
add bx, 2
mov [es:bx], word 0x00

bloader:
    jmp bloader

prints:
    cli
    push ax
    push bx
    push si
    mov si, msg       ; Message to print
    mov …
Run Code Online (Sandbox Code Playgroud)

x86 assembly interrupt-handling bootloader

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

C++ 0x,编译器挂钩和硬编码语言功能

我对C++ 0x的一些新功能有点好奇.特别是基于范围的for循环初始化列表.这两个功能都需要用户定义的类才能正常运行.

我来到这篇文章,虽然最佳答案很有帮助.我不知道它是否完全正确(我可能只是完全误解,见第一个答案的第3条评论).根据初始化列表的当前规范,标头定义了一种类型:

template<class E> class initializer_list {
public:
    initializer_list();

    size_t size() const; // number of elements
    const E* begin() const; // first element
    const E* end() const; // one past the last element
};
Run Code Online (Sandbox Code Playgroud)

您可以在规范中看到这一点,只需按Ctrl + F'class initializer_list'.

为了= {1,2,3}隐式铸造成initializer_list类,编译器有关系的一些知识{}initializer_list.没有构造函数接收任何东西,所以我可以告诉initializer_list是一个包装器,它被绑定到编译器实际生成的任何东西.

它与for( : )循环相同,它还需要用户定义的类型才能工作(尽管根据规范,更新后不需要任何代码用于数组和初始化程序列表.但初始化程序列表需要<initializer_list>,因此它是用户定义的代码要求代理).

我完全误解了这是如何工作的吗?我认为这些新功能在很大程度上依赖于用户代码,我并没有错.感觉好像功能是半生不熟的,而不是将整个功能构建到编译器中,而是由编译器完成一半,在包含中完成一半.这是什么原因?

编辑:我输入'严重依赖编译器代码',而不是'严重依赖用户代码'.我认为这完全抛弃了我的问题.我的困惑不在于编译器内置的新功能,而是依赖于用户代码的内置于编译器中的东西.

c++ compiler-construction initializer-list c++11

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

在具有未指定高度和清晰div的双列边框中,是什么导致高度差异?

我创建了一个JSFiddle来说明这个例子,并将在本文末尾包含HTML/CSS.我对border-box样式选项的理解是它导致在指定的宽度和高度中包含边框和填充.在示例中,我使用的是最小高度,因此右侧的框增加了高度,并带有额外的填充,但不是宽度.

在第二个例子中,附加高度来自哪里?在第一个中,使用两个相同宽度的浮子,高度保持不变.在第二个,右边增加高度与填充.只有在嵌套框内放置了清晰的div才会发生这种情况.删除明确的div导致第二个示例显示相同,但​​我不明白为什么clear div导致额外的高度.

更新:

出于某种原因,将溢出设置为隐藏在框上解决了问题,没有任何奇怪的行为.我不知道为什么.

HTML:

<div id="correct">
    <div class="box"><div style="clear: both;"></div></div>
    <div class="box"><div style="clear: both;"></div></div>

    <div style="clear: both;"></div>
</div>

<div id="incorrect">
    <div class="box"><div style="clear: both;"></div></div>
    <div class="box"><div style="clear: both;"></div></div>

    <div style="clear: both;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

相关的CSS:

* { box-sizing: border-box; }

#correct,
#incorrect {
    width: 800px;
    border: 1px solid red;
    padding: 5px;
    margin-bottom: 10px;
}

.box {
    min-height: 100px;
    width: 50%;
    border: 1px solid green;
    padding: 10px;
}

#correct .box {
    float: left;
} …
Run Code Online (Sandbox Code Playgroud)

html css css3 css-float

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