demo: rewrite in Rust
This commit is contained in:
parent
4760851638
commit
096193f7ab
|
@ -1,30 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
void output_int32(int x) {
|
|
||||||
printf("%d\n", x);
|
|
||||||
}
|
|
||||||
|
|
||||||
void output_int64(long x) {
|
|
||||||
printf("%ld\n", x);
|
|
||||||
}
|
|
||||||
|
|
||||||
void output_asciiart(int x) {
|
|
||||||
static char chars[] = " .,-:;i+hHM$*#@ ";
|
|
||||||
if(x < 0) {
|
|
||||||
putchar('\n');
|
|
||||||
} else {
|
|
||||||
if(x < strlen(chars)) {
|
|
||||||
putchar(chars[x]);
|
|
||||||
} else {
|
|
||||||
printf("ERROR\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern int run();
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
run();
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern "C" fn output_int32(x: i32) {
|
||||||
|
println!("{}", x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern "C" fn output_int64(x: i64) {
|
||||||
|
println!("{}", x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern "C" fn output_asciiart(x: i32) {
|
||||||
|
let chars = " .,-:;i+hHM$*#@ ";
|
||||||
|
if x < 0 {
|
||||||
|
println!("");
|
||||||
|
} else {
|
||||||
|
print!("{}", chars.chars().nth(x as usize).unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
fn run() -> i32;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
unsafe {
|
||||||
|
run();
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,5 +9,5 @@ fi
|
||||||
|
|
||||||
rm -f *.o
|
rm -f *.o
|
||||||
../../target/release/nac3standalone $1
|
../../target/release/nac3standalone $1
|
||||||
clang -Wall -O2 -o $1.elf demo.c module.o -lm
|
rustc -o $1.elf demo.rs -Clink-arg=./module.o
|
||||||
./$1.elf
|
./$1.elf
|
||||||
|
|
Loading…
Reference in New Issue