Ejemplo básico de WebAssembly que convierte un entero a float de 32 bits, ideal para principiantes con código listo para compilar y usar en JavaScript.
html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Ejemplo WebAssembly: Conversión int a float</title>
</head>
<body>
<h1>Conversión simple de int a float en WebAssembly</h1>
<p>Resultado de convertir 42 a float: <span id="resultado">Cargando...</span></p>
<script type="module">
// Código WAT del módulo WebAssembly
const watCode = `
(module
(func $int_to_float (param $x i32) (result f32)
local.get $x
f32.convert_i32_s
)
(export "int_to_float" (func $int_to_float))
)`;
// Función para convertir WAT a WASM binario usando wat2wasm
// En entorno real, se necesita una herramienta externa o usar WebAssembly.instantiateStreaming con un archivo wasm.
// Aquí se usa una función simulada para propósitos del ejemplo.
async function compileWat(wat) {
// Usamos la API WebAssembly.compileStreaming si se tiene un archivo wasm
// Para este ejemplo, se usa un compilador externo o librería como wat2wasm
// Aquí se asume que existe una función global wat2wasm para convertir el código WAT a WASM.
if (typeof wat2wasm !== 'function') {
throw new Error('wat2wasm no está disponible. Use un entorno que soporte la conversión o un archivo wasm precompilado.');
}
const wasmBinary = wat2wasm(wat);
return await WebAssembly.compile(wasmBinary);
}
(async () => {
try {
// Compilar el módulo WebAssembly
const wasmModule = await compileWat(watCode);
// Instanciar el módulo
const instance = await WebAssembly.instantiate(wasmModule);
// Llamar a la función exportada con el valor 42
const result = instance.exports.int_to_float(42);
// Mostrar el resultado en la página
document.getElementById('resultado').textContent = result;
} catch (e) {
document.getElementById('resultado').textContent = 'Error: ' + e.message;
}
})();
</script>
<!--
Código original WASM:
(module
(func $int_to_float (param $x i32) (result f32)
local.get $x
f32.convert_i32_s
)
(export "int_to_float" (func $int_to_float))
)
-->
</body>
</html>WebAssembly: módulo escrito en WAT (WebAssembly Text Format) que realiza la conversión de int a float.
Toolchain: uso de wat2wasm para compilar el código WAT en binario WebAssembly.
JavaScript: código para cargar y ejecutar el módulo WebAssembly en navegador o entorno Node.js.
Configuración: no se requieren dependencias externas, entorno estándar con soporte WebAssembly.
Arduino: no aplicable en este ejemplo, código centrado en WebAssembly.