09c43a970c86ad313d4008c9cbf17a5f36b779bb
[uebersetzerbau-ss10.git] / aus_sammelwut / paulchen / ublu / ss08 / abgabe / codea / .svn / text-base / code_gen.c.svn-base
1 #include <stdio.h>
2 #include <string.h>
3 #include "code_gen.h"
4
5 void function_header(char *name) {
6         printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
7 }
8
9 char *get_next_reg(char *name, int skip_reg) {
10         char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
11         int index, a;
12         if(name==(char *)NULL) {
13                 index=0;
14         }
15         else {
16                 for(a=0;a<9;a++) {
17                         if(!strcmp(name,reg_names[a])) {
18                                 index=a+1;
19                                 break;
20                         }
21                 }
22         }
23         if(skip_reg) {
24                 index++;
25         }
26         return reg_names[index];
27 }
28
29 char *get_param_reg(long number) {
30         char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
31         return reg_names[number-1];
32 }
33
34 void ret(void) {
35         printf("\tret\n");
36 }
37
38 void move(char *src, char *dst) {
39         if(strcmp(src,dst)) {
40                 printf("\tmovq %%%s, %%%s\n",src,dst);
41         }
42 }
43