小编Chr*_*rna的帖子

MS C#编译器和非优化代码

注意:我在发布的示例中发现了一些错误 - 编辑修复它

如果不启用优化,官方C#编译器会做一些有趣的事情.

例如,一个简单的if语句:

int x;
// ... //
if (x == 10)
   // do something
Run Code Online (Sandbox Code Playgroud)

如果优化,会变成以下内容:

ldloc.0
ldc.i4.s 10
ceq
bne.un.s do_not_do_something
// do something
do_not_do_something:
Run Code Online (Sandbox Code Playgroud)

但如果我们禁用优化,它会变成这样:

ldloc.0
ldc.i4.s 10
ceq
ldc.i4.0
ceq
stloc.1
ldloc.1
brtrue.s do_not_do_something
// do something
do_not_do_something:
Run Code Online (Sandbox Code Playgroud)

我无法理解这一点.为什么所有额外的代码,似乎在源中不存在?在C#中,这相当于:

int x, y;
// ... //
y = x == 10;
if (y != 0)
   // do something
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这样做?

.net c# compiler-construction optimization cil

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

用户代理应如何处理无法识别的HTML元素?

我试图在W3C HTML规范中找到答案,但到目前为止还没有运气.

例如,如果我有以下HTML代码:

<body>
    <p>
        <foo>bar</foo>
    </p>
</body>
Run Code Online (Sandbox Code Playgroud)

W3C是否指定用户代理应如何处理此问题?例如,"foo"元素应该被完全忽略吗?是否应忽略"foo"元素但解析内容"bar"?

此外,这样做甚至"合法"吗?

编辑:各位的一些优秀答案!我完全同意嵌入通用XML是不好的做法,除非您可以完全控制用户将使用哪个浏览器.如果要制作这样的标记,我对于实际会发生或将要发生的事情感到非常好奇:-)

html standards w3c

7
推荐指数
2
解决办法
909
查看次数

标签 统计

.net ×1

c# ×1

cil ×1

compiler-construction ×1

html ×1

optimization ×1

standards ×1

w3c ×1