Skip to content

Instantly share code, notes, and snippets.

@comex
Created February 25, 2019 01:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save comex/215d7a67b7bf91eccdb82b1bbd129bf1 to your computer and use it in GitHub Desktop.
Save comex/215d7a67b7bf91eccdb82b1bbd129bf1 to your computer and use it in GitHub Desktop.
/*
source:
module Main
main : IO ()
main = putStrLn "Hello world"
*/
#include "math.h"
#include "idris_rts.h"
#include "idris_bitstring.h"
#include "idris_stdfgn.h"
void* _idris_assert_95_unreachable(VM*, VAL*);
void* _idris_call_95__95_IO(VM*, VAL*);
void* _idris_idris_95_crash(VM*, VAL*);
void* _idris_io_95_bind(VM*, VAL*);
void* _idris_io_95_pure(VM*, VAL*);
void* _idris_Main_46_main(VM*, VAL*);
void* _idris_mkForeignPrim(VM*, VAL*);
void* _idris_prim_95__95_asPtr(VM*, VAL*);
void* _idris_prim_95__95_eqManagedPtr(VM*, VAL*);
void* _idris_prim_95__95_eqPtr(VM*, VAL*);
void* _idris_prim_95__95_managedNull(VM*, VAL*);
void* _idris_prim_95__95_null(VM*, VAL*);
void* _idris_prim_95__95_peek16(VM*, VAL*);
void* _idris_prim_95__95_peek32(VM*, VAL*);
void* _idris_prim_95__95_peek64(VM*, VAL*);
void* _idris_prim_95__95_peek8(VM*, VAL*);
void* _idris_prim_95__95_peekDouble(VM*, VAL*);
void* _idris_prim_95__95_peekPtr(VM*, VAL*);
void* _idris_prim_95__95_peekSingle(VM*, VAL*);
void* _idris_prim_95__95_poke16(VM*, VAL*);
void* _idris_prim_95__95_poke32(VM*, VAL*);
void* _idris_prim_95__95_poke64(VM*, VAL*);
void* _idris_prim_95__95_poke8(VM*, VAL*);
void* _idris_prim_95__95_pokeDouble(VM*, VAL*);
void* _idris_prim_95__95_pokePtr(VM*, VAL*);
void* _idris_prim_95__95_pokeSingle(VM*, VAL*);
void* _idris_prim_95__95_ptrOffset(VM*, VAL*);
void* _idris_prim_95__95_readChars(VM*, VAL*);
void* _idris_prim_95__95_readFile(VM*, VAL*);
void* _idris_prim_95__95_registerPtr(VM*, VAL*);
void* _idris_prim_95__95_sizeofPtr(VM*, VAL*);
void* _idris_prim_95__95_stderr(VM*, VAL*);
void* _idris_prim_95__95_stdin(VM*, VAL*);
void* _idris_prim_95__95_stdout(VM*, VAL*);
void* _idris_prim_95__95_vm(VM*, VAL*);
void* _idris_prim_95__95_writeFile(VM*, VAL*);
void* _idris_prim_95__95_writeString(VM*, VAL*);
void* _idris_prim_95_io_95_bind(VM*, VAL*);
void* _idris_run_95__95_IO(VM*, VAL*);
void* _idris_unsafePerformPrimIO(VM*, VAL*);
void* _idris_world(VM*, VAL*);
void* _idris__123_APPLY_95_0_125_(VM*, VAL*);
void* _idris__123_APPLY2_95_0_125_(VM*, VAL*);
void* _idris__123_EVAL_95_0_125_(VM*, VAL*);
void* _idris__123_runMain_95_0_125_(VM*, VAL*);
void* _idris_io_95_bind_95_IO_95__95_idr_95_108_95_34_95_108_95_36_95_case(VM*, VAL*);
void* _idris_assert_95_unreachable(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = NULL;
TOPBASE(0);
REBASE;
}
void* _idris_call_95__95_IO(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
LOC(3) = NULL;
RESERVE(2);
TOP(0) = LOC(2);
TOP(1) = LOC(3);
SLIDE(vm, 2);
TOPBASE(2);
TAILCALL(_idris__123_APPLY_95_0_125_);
}
void* _idris_idris_95_crash(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = NULL;
TOPBASE(0);
REBASE;
}
void* _idris_io_95_bind(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RESERVE(2);
TOP(0) = LOC(3);
TOP(1) = LOC(5);
STOREOLD;
BASETOP(0);
ADDTOP(2);
CALL(_idris__123_APPLY_95_0_125_);
LOC(6) = RVAL;
RESERVE(2);
TOP(0) = LOC(4);
TOP(1) = LOC(6);
STOREOLD;
BASETOP(0);
ADDTOP(2);
CALL(_idris__123_APPLY_95_0_125_);
LOC(6) = RVAL;
RESERVE(2);
TOP(0) = LOC(6);
TOP(1) = LOC(5);
SLIDE(vm, 2);
TOPBASE(2);
TAILCALL(_idris__123_APPLY_95_0_125_);
}
void* _idris_io_95_pure(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = LOC(2);
TOPBASE(0);
REBASE;
}
void* _idris_Main_46_main(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
LOC(1) = MKSTR(vm, "Hello world""\x0a""");
LOC(1) = MKINT((i_int)(idris_writeStr(stdout,GETSTR(LOC(1)))));
RVAL = NULL_CON(0);
TOPBASE(0);
REBASE;
}
void* _idris_mkForeignPrim(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = NULL;
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_asPtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, GETMPTR(LOC(0)));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_eqManagedPtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKINT((i_int)(GETMPTR(LOC(0)) == GETMPTR(LOC(1))));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_eqPtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKINT((i_int)(GETPTR(LOC(0)) == GETPTR(LOC(1))));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_managedNull(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, NULL);
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_null(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, NULL);
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peek16(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekB16(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peek32(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekB32(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peek64(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekB64(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peek8(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekB8(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peekDouble(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekDouble(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peekPtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekPtr(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_peekSingle(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_peekSingle(vm,LOC(1),LOC(2));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_poke16(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokeB16(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_poke32(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokeB32(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_poke64(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokeB64(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_poke8(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokeB8(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_pokeDouble(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokeDouble(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_pokePtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokePtr(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_pokeSingle(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_pokeSingle(LOC(1),LOC(2),LOC(3));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_ptrOffset(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, (void *)((char *)GETPTR(LOC(0)) + GETINT(LOC(1))));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_readChars(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_readChars(vm, GETINT(LOC(1)), GETPTR(LOC(2)));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_readFile(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = idris_readStr(vm, GETPTR(LOC(1)));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_registerPtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKMPTR(vm, GETPTR(LOC(0)), GETINT(LOC(1)));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_sizeofPtr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKINT(sizeof(void*));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_stderr(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, stderr);
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_stdin(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, stdin);
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_stdout(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, stdout);
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_vm(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKPTR(vm, vm);
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_writeFile(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKINT((i_int)(idris_writeStr(GETPTR(LOC(1)),GETSTR(LOC(2)))));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95__95_writeString(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = MKINT((i_int)(idris_writeStr(stdout,GETSTR(LOC(1)))));
TOPBASE(0);
REBASE;
}
void* _idris_prim_95_io_95_bind(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RESERVE(2);
TOP(0) = LOC(3);
TOP(1) = LOC(2);
SLIDE(vm, 2);
TOPBASE(2);
TAILCALL(_idris__123_APPLY_95_0_125_);
}
void* _idris_run_95__95_IO(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
LOC(2) = NULL;
RESERVE(2);
TOP(0) = LOC(1);
TOP(1) = LOC(2);
SLIDE(vm, 2);
TOPBASE(2);
TAILCALL(_idris__123_APPLY_95_0_125_);
}
void* _idris_unsafePerformPrimIO(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = NULL;
TOPBASE(0);
REBASE;
}
void* _idris_world(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = LOC(0);
TOPBASE(0);
REBASE;
}
void* _idris__123_APPLY_95_0_125_(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = NULL;
TOPBASE(0);
REBASE;
}
void* _idris__123_APPLY2_95_0_125_(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RVAL = NULL;
TOPBASE(0);
REBASE;
}
void* _idris__123_EVAL_95_0_125_(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
switch(TAG(LOC(0))) {
default:
RVAL = LOC(0);
TOPBASE(0);
REBASE;
break;
}
}
void* _idris__123_runMain_95_0_125_(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
LOC(0) = NULL;
RESERVE(1);
TOP(0) = LOC(0);
STOREOLD;
BASETOP(0);
ADDTOP(1);
CALL(_idris_Main_46_main);
LOC(0) = RVAL;
RESERVE(1);
TOP(0) = LOC(0);
SLIDE(vm, 1);
TOPBASE(1);
TAILCALL(_idris__123_EVAL_95_0_125_);
}
void* _idris_io_95_bind_95_IO_95__95_idr_95_108_95_34_95_108_95_36_95_case(VM* vm, VAL* oldbase) {
INITFRAME;
loop:
RESERVE(1);
ADDTOP(1);
RESERVE(2);
TOP(0) = LOC(7);
TOP(1) = LOC(5);
SLIDE(vm, 2);
TOPBASE(2);
TAILCALL(_idris__123_APPLY_95_0_125_);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment