Javascript 使用WASM(WebAssembly)进行学习(和教学)组装?

Javascript 使用WASM(WebAssembly)进行学习(和教学)组装?,javascript,webassembly,Javascript,Webassembly,鉴于这一点,是否有人花时间尝试通过使用WASM的可行性来实际学习/教授WebAssembly中更高层次的组装方面 在阅读了一些材料之后,似乎它仍然是针对C/C++开发的(可能是由于潜在的通量状态仍然存在?),并且没有真正的材料谈到直接使用WASM来学习汇编编程原理 WASM(至少可以)以一种非常通用的方式独特地适合于学习、教学和组装本身,如果需要,以后可以扩展到特定的硬件。学习WASM本身对于今后的总体努力和编写有趣且独特优化的程序可能是有价值的 看到人们对WASM复活的老演示场景的兴趣可能会很

鉴于这一点,是否有人花时间尝试通过使用WASM的可行性来实际学习/教授WebAssembly中更高层次的组装方面

在阅读了一些材料之后,似乎它仍然是针对C/C++开发的(可能是由于潜在的通量状态仍然存在?),并且没有真正的材料谈到直接使用WASM来学习汇编编程原理

WASM(至少可以)以一种非常通用的方式独特地适合于学习、教学和组装本身,如果需要,以后可以扩展到特定的硬件。学习WASM本身对于今后的总体努力和编写有趣且独特优化的程序可能是有价值的


看到人们对WASM复活的老演示场景的兴趣可能会很有趣…

我不确定WASM是否是学习汇编语言的理想之选。虽然它提取了现代CPU中可用的许多基本操作,但它也是一种更高级的抽象。例如:

  • 这是一台堆垛机

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

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

  • 它不提供对堆栈的访问

  • 它不提供对代码的访问

  • 它是打字的

  • 它将来可能会获得其他更高级的功能

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


(我恰好同意那些说“WebAssembly”有点用词不当的人的说法——“Web”部分和“Assembly”部分实际上都用词不当。它是对JavaScript的一种玩法,以前因其无处不在而被称为“Web的汇编语言”)

WASM就像普通的处理器汇编,但是。。。对于web:-)同样,99.9%的人不需要学习组装,如果他们不想,也不需要学习WASM

如果你想跳进低级的东西,特别是当你要处理编译器的时候,WASM将非常有用。WASM将是一种方便的方式,让某人可以移植,例如,C++编译器的后端,在浏览器中工作。因此,您编译到x86/x64/ARM/etc的同一个GCC/LLVM也可以为web编译


请注意,除了名称Web“assembly”之外,这与CPU架构(如x86或x64)没有太多关系。所以“用WASM学习组装”并不需要学习“裸金属”。有时可能会有点困惑。

作为一个老的演示场景,我发现很难理解将“assembly”放在名称中,然后以“portable”开始它的特性。这不是机器代码的工作方式,也不是我们在电源有限的情况下将机器置于最前沿的方式。现在,使用无限的电力很难证明不使用诸如C++和着色器之类的高级可移植语言。产品似乎是错误的,就像JavaScript与java没有什么关系。我们还有.NET汇编,它根本不是一种汇编语言。顺便说一句,出于教育目的,我们的目标是展示低级机械,直接连接到电子/逻辑门,我建议使用如下内容:。这涵盖了所有非常基本的原则,而且非常简单。我认为它缺少了一个微小的调整来达到完美,但这可以被lector+理论所涵盖,如果足够的课程投入其中(我认为这可以轻松涵盖6个月甚至12个月的时间跨度,如果学生已经知道JS,他们甚至可以在以后获得高级任务来扩展模拟器).我想我们都应该注意到,这可能是一个非常有价值的问题。很可能在不久的将来,wasm将用于编译器研究和编译器教育,因为它肯定会用于编译器创建,以便将语言移植到“web”平台。此外,尽管wasm因其高水平的性质而与其他集会不同,但它仍有可能用于集会教育,因为它将是一个目标明确的平台,并将成为一个可行的教学点∞ 寄存器和堆栈的缺乏对于教学来说是非常好的:一个人可以人为地限制自己使用8或32个局部变量,并像堆栈一样将所有内容溢出到内存中。您甚至可以“固定”本地指针作为堆栈指针。完全同意其他观点!