How did you made the spaghetti stack using LLVM ?

On Fri, Aug 28, 2009 at 12:04 AM, Erick Tryzelaar <[email protected]>wrote:

> I've just committed a [LLVM](http://llvm.org) code generator for `flxc`.
>
>    :::felix
>    #!build/debug/bin/flxc -I build/debug/lib --import nugram.flxh --import
> flx.flxh
>    >>> type int = "int";
>    ... BOUND SYM:     type int<3> = "int";
>    >>> fun add : int*int -> int = "%add";
>    ... BOUND SYM:     fun add<4>: int<3>^2 -> int<3> = "%add";
>    >>> fun foo (a:int, b:int, c:int) = { val d = a + b; return d + 1; }
>    ... BOUND SYM:     fun foo<5>(val a<8>: int<3>,val b<9>: int<3>,val
> c<10>: int<3>): int<3>{
>    ...   d<7> := (add<4> (a<8>, b<9>));
>    ...   return (add<4> (d<7>, 1));}
>    >>> val x = 1;
>    ... BOUND SYM:     val x<11>: int<3>;
>    ... BOUND EXE:     x<11> := 1;
>    >>> val y = 2;
>    ... BOUND SYM:     val y<12>: int<3>;
>    ... BOUND EXE:     y<12> := 2;
>    >>> val z = foo (x, y, 3);
>    ... BOUND SYM:     val z<13>: int<3>;
>    ... BOUND EXE:     z<13> := (foo<5> (x<11>, y<12>, 3));
>    >>> ^D
>
> And here's what it generates:
>
>    :::llvm
>    define void @__init__() {
>    entry:
>      %z = alloca i32                                 ; <i32*> [#uses=1]
>      %y = alloca i32                                 ; <i32*> [#uses=1]
>      %x = alloca i32                                 ; <i32*> [#uses=1]
>      store i32 1, i32* %x
>      store i32 2, i32* %y
>      %foo = call i32 @foo(i32 1, i32 2, i32 3)       ; <i32> [#uses=1]
>      store i32 %foo, i32* %z
>      ret void
>    }
>
>    define i32 @foo(i32 %a, i32 %b, i32 %c) {
>    entry:
>      %d = alloca i32                                 ; <i32*> [#uses=1]
>      %add = add i32 %a, %b                           ; <i32> [#uses=2]
>      store i32 %add, i32* %d
>      %add1 = add i32 %add, 1                         ; <i32> [#uses=1]
>      ret i32 %add1
>    }
>
> Of course it doesn't actually execute the commands yet, but the output's so
> pretty!
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Felix-language mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/felix-language
>
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to