Subversion Repository Public Repository

excompiler

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef _ASMCODE_H
#define _ASMCODE_H

#include <stdio.h>
#include <vector>
#include <string>

#include "code.h"

class AsmCodeGen2 : public CodeGen {
private:
  std::vector<std::string> lines;
  int add(std::string line);
  void binop(std::string op);
  void cmpop(std::string op);
public:
  AsmCodeGen() : lines()
  {}

  virtual void push(int n);
  virtual void pop(ValueSize size);
  
  virtual void add(ValueSize l, ValueSize r);
  virtual void sub(ValueSize l, ValueSize r);
  virtual void mul();
  virtual void div();
  virtual void cmp(ValueSize size, Keyword op);
  virtual void index(ValueSize size);

  virtual void enter(int stackSize);
  virtual void call(int paramSize);
  virtual void ret();

  virtual void mov(ValueSize size);
  virtual int lea(Addr *addr);
  virtual void ld(ValueSize size);
  virtual void cast(ValueSize from, ValueSize to);
  
  virtual int jz(ValueSize size);
  virtual int jmp();

  virtual void print(std::string format);
  virtual void println();

  virtual void setJump(int instruction, int addr);
  virtual void setAddr(int instruction, Addr *addr);

  virtual void start();
  virtual void data();
  virtual void global(std::string name, int size);
  virtual void code();
  virtual void function(std::string name);
  virtual void main();
  virtual void finish();

  virtual int end();

  virtual void print(const char *output);
};

#endif

Commits for excompiler/trunk/src/asmcode2.h

Diff revisions: vs.
Revision Author Commited Message
6 osobolev picture osobolev Sat 07 Dec, 2013 20:59:37 +0000

Experimental optimizer