#include #include #include "chelper.h" #include "tree.h" void func_header(char *s) { printf("\t.globl %1$s\n\t.type %1$s, @function\n%1$s:\n", s); } void move(char *src, char *dst) { if(strcmp(src,dst) != 0) { printf("\tmovq %%%s, %%%s\n", src, dst); } } void ret(void) { printf("\tret\n"); } char *next_reg(char *s, short skip) { char *regs[] = {"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"}; int i=0; if (s != (char*) NULL) { for(; i < 9;) { if(!strcmp(s, regs[i++])) { break; } } } if(skip) { i++; } return regs[i]; } char *param_reg(int num) { char *regs[] = {"rdi", "rsi", "rdx", "rcx", "r8", "r9"}; return regs[num-1]; }