2017-04-25 54 views
2

鉴于WASMFebruary达到MVP,有没有人花时间尝试通过使用WASM的实际可行性来实际学习/教授使用WebAssembly进行组装的更高层次的方面?学习(和教学)程序集与WASM(WebAssembly)?

经历了一些材料之后,它似乎仍然是针对C/C++开发的(也许是由于潜在的通量状态依然存在?),并且没有真正的材料谈论直接使用WASM作为学习汇编程序设计的原则。

如果需要,WASM(至少可能)以非常普遍的方式适用于学习,教学和装配本身,以后可以扩展到特定的硬件。学习WASM本身对于未来的总体努力以及编写有趣而独特的优化程序非常有价值。

它甚至可能是整齐地看到像WASM复活旧演示现场感兴趣的东西......

+1

作为一个老的演示风格,我发现很难追随任何将“程序集”放在名称中的东西,然后通过“便携”启动其特性。这不是机器代码的工作方式,也不是我们如何将机器放在功率受限的时候。现在拥有无限的能力,很难证明不使用像C++和着色器这样的高级可移植语言。 – Ped7g

+1

该产品似乎被错误命名,很像JavaScript与Java无关。我们也有.NET程序集,它根本不是汇编语言。 –

+0

顺便说一句,为了教育目的,目的是展示底层机器,并直接连接到电子/逻辑门,我建议使用类似下面的东西:[简单的8位汇编模拟器(web应用)](http:// schweigi .github.io /汇编程序模拟器/)。这涵盖了所有非常基本的原则,并且很简单。我认为它缺少一个微小的调整是完美的,但如果有足够的经验教训(如果学生已经知道JS,这可以很容易地涵盖6个甚至12个月的时间跨度,他们甚至可以获得先进的任务来延长模拟器)。 – Ped7g

回答

1

我不知道,如果WASM是理想的学习汇编语言的第一件事情。虽然它提炼了许多现代CPU中可用的基本操作,但它也是一种更高层次的抽象。例如:

  • 这是一个堆栈机器。

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

  • 它具有结构化的控制流程。

  • 它不提供对栈的访问。

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

  • 这是打字。

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

许多是先决条件使WASM 安全便携式,这本身就是很不像普通的汇编语言。 (我恰好同意那些认为“WebAssembly”实际上是“Web”部分和“Assembly”部分的用词不当的人 - 这是一个JavaScript的游戏,以前被称为“Web组件”网络的汇编语言“为其无处不在。)

+0

∞寄存器和堆栈的缺点对于教学来说非常有用,尽管它们可以:人为地限制自己使用8或32位本地机器,并将所有内容都当作堆栈溢出。你甚至可以将一个本地“钉”为堆栈指针。完全同意其他要点! –

0

WASM就像常规处理器组件一样,但是对于网络:-)同样的方式99.9%的人不需要学习组装,如果他们不需要不想,不需要学习WASM。

如果你想跳入低层次的东西,尤其是如果你要处理编译器,WASM将会非常有用。例如,WASM将是一个便捷的方式,用于移植C++编译器的后端以在浏览器中工作。因此,您编译为x86/x64/ARM /等的相同GCC/LLVM也可以编译为Web。

请注意,除了名称Web“assembly”之外,这与CPU架构(如x86或x64)无关。所以“用WASM学习装配”并不需要学习“裸机”。有时可能会有点混乱。