yo-compiler/asm.c
2024-11-03 06:24:26 +09:00

50 lines
874 B
C

#include "yo.h"
char* instname[] = {
[INOP] = "nop",
[IADDW] = "addw",
[ISUBW] = "subw",
[IMULW] = "mulw",
[IRET] = "ret",
[IMOVW] = "movw",
[IMOVM] = "movm",
[ILEA] = "lea",
[ICALL] = "call",
[IJMP] = "jmp",
[PCALL] = "pcall",
[IFRAME] = "frame",
[IARRAY] = "array",
[ISLICE] = "slice",
[ILEN] = "len",
[IBEQW] = "beqw",
[IBNEQW] = "bneqw",
[ILTW] = "lt",
[ILEQW] = "leq",
[IEQW] = "eq",
};
void
asminst(FILE *f, Inst *in)
{
for(; in; in=in->next)
instconv(f, in);
}
void
asmexport(FILE *f, Sym *pkg, Decl **arr, int n)
{
fprintf(f, "\tpackage\t");
fprintf(f, "%s\n", pkg->name);
fprintf(f, "\texported %d\n", n);
for(int i = 0; i < n; ++i){
Decl *d = arr[i];
switch(d->store){
default:
break;
// case Dfn:
// fprintf(f, "\tlink\t%u,%u,\"",d->desc->id, d->pc->pc);
// fprintf(f, "%s\"\n", d->sym->name);
// break;
}
}
}