50 lines
874 B
C
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;
|
|
}
|
|
}
|
|
} |