Guest User

Wasm builder rust file formater

a guest
Jul 31st, 2025
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.35 KB | Source Code | 0 0
  1.  
  2. use std::fs::File;
  3. use std::io::{Write, Result};
  4.  
  5. fn main() -> Result<()> {
  6.     println!("\x1B[43;30m\nCriando ficheiro main.wasm...\n");
  7.  
  8.     let mut file = File::create("main.wasm")?;
  9.  
  10.     // Cabeçalho
  11.     file.write_all(&[0x00, b'a', b's', b'm'])?;           // WASM magic
  12.     file.write_all(&[0x01, 0x00, 0x00, 0x00])?;           // WASM version
  13.  
  14.     // Seção de tipos (type)
  15.     file.write_all(&[0x01, 0x07])?;                       // section ID = 1, size = 7
  16.     file.write_all(&[0x01, 0x60, 0x02, 0x7F, 0x7F, 0x01, 0x7F])?; // 1 func (i32, i32) -> i32
  17.  
  18.     // Seção de funções (function)
  19.     file.write_all(&[0x03, 0x02, 0x01, 0x00])?;           // section ID = 3, size = 2, 1 func of type 0
  20.  
  21.     // Seção de exportações (export)
  22.     file.write_all(&[0x07, 0x07, 0x01, 0x03])?;           // section ID = 7, size = 7, 1 export, name length = 3
  23.     file.write_all(b"sum")?;                              // name = "sum"
  24.     file.write_all(&[0x00, 0x00])?;                       // export kind = func, index = 0
  25.  
  26.     // Seção de código (code)
  27.     file.write_all(&[0x0A, 0x09, 0x01, 0x07, 0x00])?;     // section ID = 10, size = 9, 1 func, body size = 7, no locals
  28.     file.write_all(&[0x20, 0x00, 0x20, 0x01, 0x6A, 0x0B])?; // get_local 0, get_local 1, i32.add, end
  29.  
  30.     println!("Ficheiro main.wasm criado com sucesso!");
  31.  
  32.     Ok(())
  33. }
Advertisement
Add Comment
Please, Sign In to add comment