diff options
| author | 2023-06-06 15:08:46 +0200 | |
|---|---|---|
| committer | 2023-06-06 15:08:46 +0200 | |
| commit | 86625b1166bd39e28b4dd4995ed6cd88c0bdde7e (patch) | |
| tree | 2bfd67ddc7e3b4bb4c4a3d951dfc80fac7c4bad3 /obj.c | |
| parent | 3388975ee3a0814e9c95863035ab0d122174c549 (diff) | |
codegen skeleton
Diffstat (limited to 'obj.c')
| -rw-r--r-- | obj.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -0,0 +1,27 @@ +#include "obj.h" +#include "common.h" + +struct objfile objout; + +void +objini(const char *file) +{ + enum { NTEXT = 4<<20 /* 4MiB */ }; + assert(!objout.file); + objout.file = file; + objout.code = objout.textbegin = mapzeros(NTEXT); + objout.textend = objout.textbegin + NTEXT; +} + +void +objfini(void) +{ + void *popen(char *, char *), pclose(void *); + long fwrite(void *, size_t, size_t, void *); + void *cmd = popen("ndisasm -b64 -", "w"); + ioflush(&bstderr); ioflush(&bstdout); + fwrite(objout.textbegin, 1, objout.code - objout.textbegin, cmd); + pclose(cmd); +} + +/* vim:set ts=3 sw=3 expandtab: */ |