various samples and experiments

This commit is contained in:
NikVolf
2017-05-04 19:49:40 +03:00
parent beea9addfc
commit e18e630bab
4 changed files with 51 additions and 33 deletions
+6 -31
View File
@@ -1,33 +1,8 @@
#![feature(link_args)]
#![no_main]
// as it is experimental preamble
#![allow(dead_code)]
#[link_args = "-s WASM=1 -s NO_EXIT_RUNTIME=1 -s NO_FILESYSTEM=1"]
extern {}
static DATA: u32 = 0;
#[no_mangle]
pub fn call(_descr: *mut u8) {
let data_ptr = &DATA as *const u32 as *mut u32;
unsafe { *data_ptr += 1; }
extern {
#[link(name="env")]
fn log_event(id: *const u8);
}
/* This produces the following code (after injecting gas counter & optimizing)
(module
(type (;0;) (func (param i32)))
(type (;1;) (func (param i32)))
(import "env" "memory" (memory (;0;) 256 256))
(import "env" "table" (table (;0;) 0 0 anyfunc))
(import "env" "gas" (func (;0;) (type 1)))
(func (;1;) (type 0) (param i32)
i32.const 4
call 0
i32.const 1268
i32.const 1
i32.store)
(export "_call" (func 1))
(data (i32.const 1212) " \05"))
*/
fn main() {
unsafe { log_event(::std::ptr::null()); }
}