用WASM(WebAssembly)学习(和教授)汇编语言?

3
考虑到WASM在二月份达到了MVP,有没有人花时间研究过使用WASM来学习/教授汇编语言的可行性呢?经过一些资料的阅读,似乎它仍然面向C/C++开发(也许是由于仍然存在潜在的不稳定因素),并且没有真正涉及直接使用WASM学习汇编编程原理的材料。WASM本身(至少可能)非常适合以一种非常普遍的方式学习和教授汇编本身,如果需要,稍后可以将其扩展到特定的硬件。学习WASM本身对于未来的一般努力和编写有趣且独特优化程序可能非常有价值。甚至可能会有兴趣看到类似旧演示场景的WASM复活...

1
作为一名老式演示场景制作者,我发现很难跟上任何将“汇编”放入名称中,并以“可移植”开始其特征的东西。这不是机器码的工作方式,也不是当时功率有限时我们将机器置于领先地位的方式。现在,由于拥有无限的计算能力,很难不使用一些高级可移植语言,如C++和着色器。 - Ped7g
1
该产品似乎被命名错误,就像JavaScript与Java关系不大一样。我们还有.NET程序集,它根本不是汇编语言。 - Bo Persson
顺便说一句,为了教育目的,展示低级机器结构和电子/逻辑门之间的直接连接,我建议使用类似这样的东西:简单的8位汇编模拟器(Web应用)。它涵盖了所有非常基本的原则,并且足够简单。我认为它还需要微小的调整才能完美无缺,但如果足够多的课程被放入其中,讲师+理论可以解决这个问题(如果学生已经知道JS,他们甚至可以获得高级任务来扩展模拟器)。 - Ped7g
1
我认为我们都应该注意到这是一个潜在非常有价值的问题。很可能在不久的将来,wasm将被用于编译器研究和编译器教育,因为它绝对会被用于编译器创建,以便将语言移植到“Web”平台上。此外,尽管wasm确实不像其他汇编语言那样具有高级特性,但它仍然有可能用于汇编语言教育,因为它将成为一个高度针对性的平台,并成为一个可行的教学点。 - GDP2
2个回答

1
我不确定Wasm是否适合初学汇编语言的人。虽然它提炼了现代CPU中许多基本操作,但它也是一个更高级的抽象。例如:
  • 它是一个堆栈机器。

  • 它有无限的虚拟寄存器集。

  • 它有结构化控制流程。

  • 它不提供对堆栈的访问。

  • 它不提供对代码的访问。

  • 它是有类型的。

  • 它可能会在未来获得其他更高级的功能。

其中许多是使Wasm安全和可移植所必需的先决条件,这本身与普通汇编语言非常不同。

(我碰巧同意那些认为“WebAssembly”有点误导性的人 - 实际上,“Web”部分和“Assembly”部分都是如此。这是因为先前将JavaScript称为“Web的汇编语言”以其普及性而言。)


无限寄存器和缺乏堆栈对于教学非常有用:一个人可以人为地限制自己只使用8或32个本地变量,并将所有东西溢出到内存中,就像它是一个堆栈一样。你甚至可以将一个本地变量“固定”为堆栈指针。在其他方面完全同意! - JF Bastien

1
WASM就像常规处理器汇编一样,但是......适用于Web :-) 就像99.9%的人不想学习汇编一样,一个人也不需要学习WASM。
如果你想进入底层领域,特别是要处理编译器,那么WASM将非常有用。WASM将为某人提供一种便捷的方式,例如,在浏览器中工作时将C++编译器的后端移植过来。因此,你可以使用相同的GCC/LLVM编译为x86/x64/ARM等架构,并能够在Web上进行编译。
请注意,除了名字中的Web "assembly"之外,这与CPU架构(如x86或x64)没有太多关系。所以,“学习WASM的汇编”并不一定会学习到“裸机”。有时可能会有些混淆。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接