Meo Versions Save

subset c compiler

v0.4

3 years ago
  • Compile function, now it can compile recursion.
$ cat sample/recursion.c
int fibonacci(int n)
{
    if (n < 2) return n;
    return fibonacci(n-1) + fibonacci(n-2);
}

int main()
{
    int k = 15;
    int i = fibonacci(k);
    printf("fibonacci order %d = %d\n",k,i);
    return 1;
}
$ ./meo sample/recursion.c
$ ./a.out
fibonacci order 15 = 610
$

v0.3

3 years ago
  • Support if condition, for loop, while loop.
  • Support function call ( <= 6 input parameters).
  • Support bitwise | & ^ and logic operator || &&
$ cat sample/fibonacci.c
int main()
{
    int pre = 1;
    int cur = 1;
    int n = 15;

    for (int i = 2; i < n; i=i+1) {
        int t = cur;
        cur = cur + pre;
        pre =  t;
    }

    printf("So fibonacci in order %d is : %d\n",n,cur);

    return 0;
}
$ ./meo sample/fibonacci.c
$ ./a.out
So fibonacci in order 15 is : 610
$

v0.2

3 years ago
  • Support Integer variable.
  • Support assignment, relational operator <, <=, >, >=, ==, !=
$ cat sample/clgt.c
{
    int i;
    int j;
    int k;
    i = 1;
    j = 2;
    k = 3;
    k = i + j * k;
    int a;
    a = i > j;
    i = j == j;
    print k;
    print a;
    print i;
}
$ ./meo sample/clgt.c
$ ./a.out
7
0
1

v0.1

3 years ago
  • Support very very simple arithmetic integer operator +, -, * , /
  • Support only x86-64
  • Using backend of gcc to generate asm to machine instruction.
    $ cat sample/s4.c
    (2+3)/2*(7-5)+9/3;
    $ ./meo sample/s4.c
    $ ./a.out
    $ echo $?
    7

    $
    $ cat sample/s5.c
    (2+1)/2-(7-5)+9/3;
    $ ./meo sample/s5.c
    $ ./a.out
    $ echo $?
    2