2017-04-25 5 views
2

Angesichts WASM erreicht MVP in February, hat jemand Zeit zu versuchen, durch die Lebensfähigkeit der Verwendung von WASM zu arbeiten, um wirklich zu lernen/teach höheren Ebenen Aspekte der Montage mit WebAssembly?Lernen (und Lehren) Versammlung mit WASM (WebAssembly)?

Nach ein wenig Material scheint es immer noch auf C/C++ - Entwicklung ausgerichtet zu sein (vielleicht aufgrund des möglichen Flusszustands, der noch existiert?) Und es gibt kein reales Material, das über die direkte Verwendung von WASM spricht soweit lernen, Programmierung Prinzipien zu programmieren.

WASM ist (zumindest könnte) in einzigartiger Weise zum Lernen und Lehren geeignet, die Assembly selbst in einer sehr universellen Art und Weise, die später auf spezifische Hardware erweitert werden könnte, falls gewünscht. Das Lernen von WASM selbst könnte für die allgemeinen Bemühungen nützlich sein und interessante und einzigartig optimierte Programme schreiben.

Es könnte sogar ordentlich sein Interesse an Dingen wie die alte Demo-Szene mit wasm ...

+1

Als ein alter Demoszener finde ich kaum etwas, was "Assembly" in den Namen bringt, und dann beginnt seine Charakteristik mit "portable". So funktioniert der Maschinencode nicht, und das ist nicht die Art und Weise, wie wir die Maschinen bei einer begrenzten Leistung wieder auf Vordermann bringen. Jetzt mit unbegrenzter Macht ist es schwer zu rechtfertigen, keine hochrangigen tragbaren Sprache wie C++ und Shadern zu verwenden. – Ped7g

+1

Das Produkt scheint falsch benannt zu sein, ähnlich wie JavaScript wenig mit Java zu tun hat. Wir haben auch .NET-Assembly, das überhaupt keine Assemblersprache ist. –

+0

BTW, für Bildungszwecke mit dem Ziel, Low-Level-Maschinen zu zeigen, mit direkter Verbindung zu Elektronik/logischen Gates, schlage ich vor, etwas wie zu verwenden: [Simple 8-Bit Assembler-Simulator (Web-App)] (http: // schweigi .github.io/Assembler-Simulator /). Dies deckt alle sehr grundlegenden Prinzipien ab und ist einfach genug. Ich denke, es fehlen ein paar Anpassungen, um perfekt zu sein, aber das kann durch die Lektor-Theorie abgedeckt werden, wenn genug Lektionen dazu gesetzt werden (ich denke, dass dies leicht 6 oder sogar 12 Monate abdecken kann, wenn die Schüler bereits JS kennen, Sie können sogar erweiterte Aufgaben erhalten, um den Simulator später zu erweitern). – Ped7g

Antwort

1

Ich bin nicht sicher, wieder belebt, um zu sehen, ob wasm für das Lernen erste Dinge über Assemblersprache ideal ist. Während es viele der Grundoperationen in modernen CPUs beschreibt, ist es auch eine etwas höhere Abstraktion. Zum Beispiel:

  • Es ist eine Stapelmaschine.

  • Es hat eine unendliche Menge von virtuellen Registern.

  • Es hat einen strukturierten Ablauf.

  • Es bietet keinen Zugriff auf den Stapel.

  • Es bietet keinen Zugriff auf Code.

  • Es ist getippt.

  • Es wird wahrscheinlich in der Zukunft weitere höherwertige Funktionen erhalten.

Viele von ihnen sind Voraussetzungen zu machen wasm sicher und tragbare, die an sich sehr im Gegensatz zu gewöhnlichen Assemblersprachen ist.

(Ich stimme zufällig mit denen überein, die sagen, dass "WebAssembly" ein bisschen falsch ist - sowohl der "Web" -Teil als auch der "Assembly" -Teil. Es war ein Spiel mit JavaScript, das zuvor aufgerufen wurde. die Assembler-Sprache des Webs "für seine Allgegenwart."

+0

Die ∞ Register und das Fehlen von Stacks sind jedoch großartig für den Unterricht: man * kann * sich künstlich auf die Verwendung von 8 oder 32 Locals beschränken und alles in den Speicher verschütten, als wäre es ein Stack. Sie können sogar einen lokalen als den Stapelzeiger "anheften". Stimme völlig zu den anderen Punkten! –

0

WASM ist wie normale Prozessor-Assembly, aber ... für das Web :-) Die gleiche Weise 99,9% der Menschen müssen nicht Montage lernen, wenn sie nicht möchte nicht, man muss WASM nicht lernen.

WASM wird sehr nützlich sein, wenn Sie in Low-Level-Zeug springen und vor allem, wenn Sie mit Compilern umgehen. WASM ist eine bequeme Möglichkeit für jemanden, beispielsweise das Backend eines C++ - Compilers zu portieren, um im Browser zu arbeiten. Also das gleiche GCC/LLVM, das Sie zu x86/x64/ARM/etc kompilieren, kann auch für das Web kompilieren.

Beachten Sie, dass neben dem Namen Web "Assembly", dies nicht zu viel mit CPU-Architektur wie x86 oder x64 zu tun hat. So "Lernen Assembly mit WASM" braucht man nicht lernen das "Bare Metal".Manchmal kann es etwas verwirrend sein.

Verwandte Themen