Hey guys!
I am trying to educate myself on emscripten and I definitely feel that the
idea of transpiling to JS is amazing! I was trying the basic
`hello_world.c` program. The c code was:
#include <stdio.h>
int main() {
// declare and initialize string
char str[50] = "Hello World!\n";
// print string
printf("%s",str);
return 0;
}
The compiled `a.out.js` has the main function which looks like:
function _main() {
var $0 = 0, $1 = 0, $vararg_buffer = 0, dest = 0, label = 0, sp = 0, src =
0, stop = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0))
abortStackOverflow(64|0);
$vararg_buffer = sp;
$1 = sp + 8|0;
$0 = 0;
dest=$1; src=384; stop=dest+50|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0;
dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
HEAP32[$vararg_buffer>>2] = $1;
(_printf(434,$vararg_buffer)|0);
STACKTOP = sp;return 0;
}
I am assuming that the first argument to _printf contains the string
representation somehow, may be as an offset into the HEAP8. I have however,
not been able to figure out where exactly in JS code is the HEAP8 populated
with characters from the string "Hello World!\n". There has to be a place
where memory is allocated and corresponding character values are saved at
those memory locations right? Tried going through the `run` function to see
if it happens in `preMain` function but I have no clue at this point.
It will be a great help if someone can point at what point are variables
initialized in the JS file (especially strings because numbers are
initialized directly in _main I gathered) so that I can study that and
move forward from there.
I really appreciate the support!
Thanks
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.