Rumah > hujung hadapan web > tutorial js > Pengenalan kepada WebAssembly

Pengenalan kepada WebAssembly

Linda Hamilton
Lepaskan: 2025-01-20 12:29:13
asal
592 orang telah melayarinya

WebAssembly (WASM) – Penyelaman Dalam: Bahagian 1

Siaran ini memulakan siri meneroka WebAssembly. Cari pautan ke bahagian lain siri di bawah.

WebAssembly, atau WASM, ialah bahasa peringkat rendah seperti pemasangan yang direka untuk menjalankan aplikasi yang dibina menggunakan pelbagai bahasa pengaturcaraan dalam penyemak imbas web. Sifat merentas platform dan reka bentuk peringkat rendahnya memberikan kelajuan hampir asli, membuka kunci keupayaan web yang sebelum ini mustahil dengan JavaScript sahaja. Jika anda mendambakan apl web yang lebih pantas yang mampu mengendalikan tugasan intensif pengiraan, WASM ialah penyelesaiannya. Pengenalan ini akan merangkumi fungsi teras WASM, asal usulnya dan cara mula menggunakannya.

Apakah itu WebAssembly?

WebAssembly ialah sasaran kompilasi peringkat rendah yang direka khusus untuk penyemak imbas web. Ia bukan bahasa untuk pelaksanaan langsung; sebaliknya, ia mentakrifkan struktur seperti himpunan yang dihimpunkan oleh bahasa lain ke dalam. Aspek "sasaran kompilasi" ini penting.

Pertimbangkan contoh kod C ini:

<code class="language-c">int a = 1;
int b = 2;
int c = a + b;</code>
Salin selepas log masuk
Salin selepas log masuk

Pengkompil C menterjemah ini ke dalam arahan pemasangan (atau kod mesin):

<code class="language-assembly">mov eax, 1    ; Load 1 into register EAX
mov ebx, 2    ; Load 2 into register EBX
add eax, ebx  ; Add EAX and EBX, result in EAX</code>
Salin selepas log masuk
Salin selepas log masuk

Ini, seterusnya, menghasilkan perwakilan binari:

<code>00000000000000000000000000000011</code>
Salin selepas log masuk
Salin selepas log masuk

(Nota: Output binari yang tepat berbeza-beza bergantung pada seni bina CPU. Ini adalah ilustrasi yang dipermudahkan.)

Introduction to WebAssembly

Kod C bertukar menjadi pemasangan, kemudian binari—boleh laksana terus oleh komputer. WebAssembly mengubah suai proses ini. Daripada pemasangan standard, pengkompil mungkin menghasilkan:

<code>$a int
$b int
$c int

set $a 1
set $b 2
set $c = add $a $b</code>
Salin selepas log masuk
Salin selepas log masuk

(Ini ialah sintaks hipotetikal untuk tujuan ilustrasi sahaja, bukan sintaks WASM sebenar.)

Introduction to WebAssembly

Jika semua pelayar memahami sintaks ini, ia akan merevolusikan pembangunan web. Penyusun untuk bahasa seperti C , Rust dan Go boleh menjana output ini, membolehkan penyemak imbas melaksanakan program yang ditulis dalam mana-mana bahasa, tanpa mengira sistem pengendalian atau penyemak imbas.

Spesifikasi WebAssembly yang ditakrifkan oleh W3C memastikan pengendalian penyemak imbas yang konsisten terhadap WASM. Pelayar utama sudah menyokong WebAssembly secara asli.

Perwakilan WebAssembly

WebAssembly mempunyai dua format utama:

  • WAT (WebAssembly Text): Format teks untuk penyahpepijatan dan pemahaman kod.
  • WASM (WebAssembly Module): Format binari untuk pelaksanaan penyemak imbas.

Format ini boleh ditukar ganti; WAT boleh ditukar kepada WASM, dan sebaliknya. Menyusun kepada salah satu adalah mungkin.

Sintaks WebAssembly Asas (WAT)

Mari kita lihat semula contoh kita menggunakan WAT:

  1. Isytiharkan tiga pembolehubah integer 32-bit:
<code class="language-c">int a = 1;
int b = 2;
int c = a + b;</code>
Salin selepas log masuk
Salin selepas log masuk
  1. Tetapkan nilai:
<code class="language-assembly">mov eax, 1    ; Load 1 into register EAX
mov ebx, 2    ; Load 2 into register EBX
add eax, ebx  ; Add EAX and EBX, result in EAX</code>
Salin selepas log masuk
Salin selepas log masuk
  1. Tambah dan simpan hasil:
<code>00000000000000000000000000000011</code>
Salin selepas log masuk
Salin selepas log masuk

WebAssembly menggunakan mesin tindanan. get_local menolak nilai ke dalam tindanan, i32.add menambah dua elemen tindanan teratas dan set_local menyimpan hasilnya. Perduaan WASM yang setara ialah:

<code>$a int
$b int
$c int

set $a 1
set $b 2
set $c = add $a $b</code>
Salin selepas log masuk
Salin selepas log masuk

Walaupun ini mungkin kelihatan rumit, ingat bahawa WASM ialah sasaran kompilasi, bukan bahasa pengaturcaraan utama. Anda biasanya akan menulis kod dalam bahasa peringkat tinggi dan menyusun ke WASM.

Adakah WebAssembly Menggantikan JavaScript?

Tidak. WASM direka untuk melengkapi JavaScript, bukan menggantikannya. JavaScript cemerlang dalam manipulasi DOM dan interaksi web asas, manakala WASM mengendalikan tugas intensif pengiraan dengan prestasi hampir asli. Sinergi ini membolehkan pengagihan tugas yang cekap.

Kes Penggunaan WebAssembly

Prestasi WASM menjadikannya ideal untuk:

  1. Pemprosesan imej dan video
  2. Permainan (termasuk 3D)
  3. Aplikasi muzik
  4. Kriptografi
  5. Alat visualisasi
  6. Simulator dan emulator

Contoh aplikasi WASM sedia ada termasuk Figma, Amazon Prime Video dan Google Earth.

WebAssembly Beyond the Browser

Walaupun pada mulanya tertumpu pada pelayar, keupayaan WASM melangkaui web melalui WASI (Antara Muka Sistem WebAssembly). WASI menyediakan API standard, membolehkan penciptaan aplikasi merentas platform daripada binari tunggal, menghapuskan keperluan untuk binaan khusus platform.

Sebelum WebAssembly

Beberapa projek sebelumnya cuba menjalankan bahasa lain dalam penyemak imbas, tetapi sering menghadapi pengehadan kerana kekurangan penyeragaman, kelemahan keselamatan atau isu prestasi (ActiveX, Java Applets, Flash, NaCl, asm.js, Dart). WebAssembly menangani kelemahan ini melalui penyeragaman, mudah alih, keselamatan, prestasi dan kebolehlanjutan.

Kesimpulan

Pengenalan ini memberikan gambaran keseluruhan peringkat tinggi WebAssembly. Siaran berikutnya akan mendalami topik tertentu dan meneroka projek WebAssembly praktikal.

Atas ialah kandungan terperinci Pengenalan kepada WebAssembly. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan