
I looked at generating C for AVR with JHC. I wanted to see what
this program became:
http://github.com/solidsnack/trippy-waves/blob/99ad424a3ed4a21ff6f6a662293d6...
The program is relatively simple. It doesn't work, of course (I
never did get the right FFI bindings figured out) but the
generated C is suggestive.
http://github.com/solidsnack/trippy-waves/blob/99ad424a3ed4a21ff6f6a662293d6...
The generated `main' is very plain:
static void A_STD
ftheMain(void)
{
jhc_function_inc();
uintptr_t v10 = ((uintptr_t)DDRB());
*((uint8_t *)(v10)) = 23;
uintptr_t v18 = ((uintptr_t)PORTB());
return *((uint8_t *)(v18)) = 23;
}
This is a simple, literal translation of my foreign calls. To
all appearances, the runtime is entirely bypassed. The
function `jhc_function_inc()' is a performance counter, set to
no-op for non-profiling builds as far as I can tell.
It also doesn't compile but that's because I can't figure out
how to declare pointers in the FFI; and if I could, then I'd
have to go through by hand and pull out includes for things
that aren't available for AVR programming --