问题标签 [compiler-construction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
10826 浏览

c - 在编译时检查堆栈使用情况

有没有办法在 C 编译时知道并输出函数所需的堆栈大小?这是我想知道的:

让我们采取一些功能:

编译此函数时,我想知道调用它时会消耗多少堆栈空间。这对于检测隐藏大缓冲区的结构的堆栈声明可能很有用。

我正在寻找可以打印这样的东西:

文件 foo.c : 函数 foo 堆栈使用是n字节

有没有办法不查看生成的程序集来知道这一点?或者可以为编译器设置的限制?

更新:我不是试图避免给定进程的运行时堆栈溢出,我正在寻找一种在运行前查找的方法,如果编译器确定的函数堆栈使用情况可用作编译过程的输出。

让我们换一种说法:是否有可能知道函数本地所有对象的大小?我猜编译器优化不会是我的朋友,因为一些变量会消失,但一个更好的限制是好的。

0 投票
15 回答
57664 浏览

c# - “无法评估表达式,因为当前方法的代码已优化。”是什么意思?意思是?

我写了一些带有大量递归的代码,这需要相当多的时间才能完成。每当我“暂停”运行以查看发生了什么时,我都会得到:

无法评估表达式,因为当前方法的代码已优化。

我想我明白这意味着什么。然而,令我困惑的是,在我点击 step 之后,代码不再“优化”,我可以查看我的变量。这是怎么发生的?代码如何在优化代码和非优化代码之间来回翻转?

0 投票
3 回答
3979 浏览

c# - 实现 C# yield 语句的算法

我很想自己弄清楚,但我想知道将带有 yield 语句的函数转换为枚举器的状态机的算法是什么?例如,C# 是如何做到这一点的:

进入这个:

当然,根据原始代码,结果可能会完全不同。

0 投票
3 回答
1683 浏览

ruby - Ruby 到 Actionscript3 字节码

嗨,我正在研究 Ruby 到 actionscript 3 字节码编译器,发现提到了一个名为 Red Sun 的项目,但可以找到的信息很少。

所以我的问题是......有哪些工具可以将 Ruby 源代码转换为 AS3 字节码

0 投票
4 回答
32368 浏览

compiler-construction - wxwidgets setup.h "没有这样的文件"

对这个问题的快速谷歌搜索表明它很常见,我只是无法在我的情况下找出解决方案。

我直接从 wxWidgets 网站直接安装了适用于 Windows 的 wxWidgets 2.8.8。

每当我尝试编译任何东西(例如“wxWidgets 的第一个程序” - http://zetcode.com/tutorials/wxwidgetstutorial/firstprograms/中描述的示例应用程序)时,我都会得到:

wx/setup.h: 没有这样的文件或目录

我在编译器搜索列表中包含了 C:\wxWidgets-2.8.8\include 和 C:\wxWidgets-2.8.8\include\wx。

它应该很简单——但事实并非如此!:(

如果我尝试使用与 wxWidgets 集成的 IDE(例如 Code::Blocks),也会发生同样的事情——我原以为,这只是解决问题的方法......

因此,请提供一些帮助...为什么找不到 setup.h?

0 投票
2 回答
522 浏览

javascript - Trace Trees 对 Javascript 性能的改进是否会应用到其他解释语言中?

听起来 Mozilla 使用TraceMonkey提高 JavaScript 性能很幸运。另请参阅 Andreas Gal关于 Trace Trees 的论文

其他解释器/编译器是否可以使用这些改进?如果可以,这是否意味着我们将看到其他解释语言的一系列改进?

0 投票
12 回答
17646 浏览

.net - 是否可以将 .NET IL 代码编译为机器代码?

我想在没有 .NET 框架的情况下分发我的 .NET 程序。是否可以将 .NET 程序编译为机器代码?

0 投票
9 回答
2551 浏览

c++ - 浮点值在发布和调试版本中表现不同

当我在发布模式和调试模式下编译它时,我的应用程序会生成不同的浮点值。我发现的唯一原因是我保存了一个二进制跟踪日志,而来自发布版本的日志与调试版本略有不同,看起来 32 位浮点值的底部两位相差约 1/2的案例。

您会认为这种“差异”是一个错误,还是会出现这种差异。这是编译器错误还是内部库错误。

例如:

问题与 X360 编译器有关。

0 投票
1 回答
28383 浏览

c# - 使用接口的隐式运算符

我有一个泛型类,我正在尝试为其实现隐式类型转换。虽然它主要工作,但它不适用于界面转换。经过进一步调查,我发现存在编译器错误:“用户定义的接口转换”适用。虽然我知道这应该在某些情况下强制执行,但我正在尝试做的事情似乎是一个合法的案例。

这是一个例子:

使用它的代码:

有谁知道解决方法,或者任何人都可以以令人满意的方式解释为什么我不能interfaceReferenceToBar隐式转换为Foo<IBar>,因为在我的情况下它没有被转换,而只包含在 Foo 中?

编辑: 看起来协方差可能会提供救赎。我们希望 C# 4.0 规范允许使用协方差隐式转换接口类型。

0 投票
4 回答
963 浏览

performance - 有编译 VBScript 的经验吗?

我有一个自制的 2000 行 VBScript 脚本,随着我添加的每个附加代码,它变得越来越慢。它是作为私人调试辅助工具创建的,现在它已经变得非常有用。我想打磨它并与我们的产品一起发货。

我想我可以通过编译它并使其成为 EXE 来加速它。此外,我希望我的工具有一个用户界面,一旦我使用编译平台可能给我的额外库,这可能是可能的。我还在考虑通过调用Win32函数来扩展脚本,以实现我需要的任何缺失功能。

我有 VB 6.0 或者我可以购买外部编译器。但我还需要创建的程序(而不是编译器本身)在 Windows Vista 中运行良好。我最好的选择是什么?