add the initial version

This commit is contained in:
vms 2019-04-12 22:02:49 +03:00
parent f2dd1f89bb
commit 0907da6246
7 changed files with 86 additions and 0 deletions

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
# IntelliJ
.idea
.vscode
*.iml
# MacOS folder metadata
.DS_Store
# Text writing
*.scriv
# Webassembly generated files
*.wasm

20
Makefile Normal file
View File

@ -0,0 +1,20 @@
TARGET = hello_world
CC = clang
SYSROOT = --sysroot=/tmp/wasi-sdk/
TARGET_TRIPLE = --target=wasm32-unknown-wasi
CFLAGS = -nostartfiles -fvisibility=hidden -Wl,--no-entry,--demangle,--allow-undefined
EXPORT_FUNCS = -Wl,--export=allocate,--export=deallocate,--export=invoke
SDK = sdk/allocator.c sdk/logger.c
.PHONY: default all clean
default: $(TARGET)
all: default
$(TARGET): main.c $(SDK)
$(CC) $(SYSROOT) $(TARGET_TRIPLE) $(CFLAGS) $(EXPORT_FUNCS) $^ -o $@.wasm
.PRECIOUS: $(TARGET)
clean:
-rm -f $(TARGET).wasm

6
main.c Normal file
View File

@ -0,0 +1,6 @@
#include "sdk/allocator.h"
#include "sdk/logger.h"
char *invoke(const char *str, int length) {
}

13
sdk/allocator.c Normal file
View File

@ -0,0 +1,13 @@
#include "allocator.h"
#include <stdlib.h>
#define UNUSED(x) (void)(x)
void *allocate(size_t size) {
return malloc(size);
}
void deallocate(void *ptr, size_t size) {
UNUSED(size);
free(ptr);
}

12
sdk/allocator.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef FLUENCE_C_SDK_ALLOCATOR_H
#define FLUENCE_C_SDK_ALLOCATOR_H
#include <stddef.h> // for size_t
// used by Wasm VM for byte array passing (should be exported from module)
void *allocate(size_t size);
// used by Wasm VM for freeing previous memory allocated by allocate function
void deallocate(void *ptr, size_t size);
#endif //FLUENCE_C_SDK_ALLOCATOR_H

15
sdk/logger.c Normal file
View File

@ -0,0 +1,15 @@
#include "logger.h"
#define __LOGGER_IMPORT(name) \
__attribute__((__import_module__("logger"), __import_name__(#name)))
void __write(char ch) __LOGGER_IMPORT(write);
void __flush() __LOGGER_IMPORT(flush);
void wasm_log(const char *str, int len) {
for(int byteId = 0; byteId < len; ++byteId) {
__write(str[byteId]);
}
__flush();
}

7
sdk/logger.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef FLUENCE_C_SDK_LOGGER_H
#define FLUENCE_C_SDK_LOGGER_H
// writes provided string to Wasm VM logger
void wasm_log(const char *str, int len);
#endif //FLUENCE_C_SDK_LOGGER_H