Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

fib.d

extern (C) int write(int, char *, int);

void writenum(int v)
{
    char c;
    
    if (v >= 10) {
        int h, l;
        h = v / 10;
        l = v % 10;
        writenum(h);
        c = '0' + l;
    } else {
        c = '0' + v;
    }
    write(1, &c, 1);
}

void fib(int n)
{
    int a, b, c;
    a = 0;
    b = 1;
    c = 0;
    
    for (int i = 0; i < n; i++) {
        writenum(a);
        write(1, "\n", 1);
        c = b;
        b = a + b;
        a = c;
    }
}

int main()
{
    fib(25);
    return 0;
}

fib.o.c

/* FILE GENERATED BY TDC */
#include "tdc_d_hdr.h"



struct _D3fib8writenumFiZv__params;

struct _D3fib8writenumFiZv__locals_0_0_0_0;

struct _D3fib8writenumFiZv__locals_0_0_0;

struct _D3fib8writenumFiZv__locals_0_0;

struct _D3fib8writenumFiZv__locals_0_1_0;

struct _D3fib8writenumFiZv__locals_0_1;

struct _D3fib8writenumFiZv__locals_0;

struct _D3fib8writenumFiZv__locals;

struct _D3fib3fibFiZv__params;

struct _D3fib3fibFiZv__locals_0_0_0_1_0_0;

struct _D3fib3fibFiZv__locals_0_0_0_1_0;

struct _D3fib3fibFiZv__locals_0_0_0_1;

struct _D3fib3fibFiZv__locals_0_0_0;

struct _D3fib3fibFiZv__locals_0_0;

struct _D3fib3fibFiZv__locals_0;

struct _D3fib3fibFiZv__locals;

struct _Dmain__params;

struct _Dmain__locals_0;

struct _Dmain__locals;

int32_t write(int32_t, uint8_t *, int32_t);

void _D3fib8writenumFiZv(int32_t _D3fib8writenumFiZv1vi);

void _D3fib3fibFiZv(int32_t _D3fib3fibFiZv1ni);

int32_t _Dmain();

#ifdef STACK_UP
struct _D3fib8writenumFiZv__params {
#define _D3fib8writenumFiZv__first _D3fib8writenumFiZv1vi
    int32_t _D3fib8writenumFiZv1vi;
};
#else
struct _D3fib8writenumFiZv__params {
    int32_t _D3fib8writenumFiZv1vi;
#define _D3fib8writenumFiZv__first _D3fib8writenumFiZv1vi
};
#endif

struct _D3fib8writenumFiZv__locals_0_0_0_0 {
    struct _D3fib8writenumFiZv__params *params;
    uint8_t _D3fib8writenumFiZv1ca;
    int32_t _D3fib8writenumFiZv1hi;
    int32_t _D3fib8writenumFiZv1li;
};

struct _D3fib8writenumFiZv__locals_0_0_0 {
    struct _D3fib8writenumFiZv__params *params;
    uint8_t _D3fib8writenumFiZv1ca;
};

struct _D3fib8writenumFiZv__locals_0_0 {
    struct _D3fib8writenumFiZv__params *params;
    uint8_t _D3fib8writenumFiZv1ca;
};

struct _D3fib8writenumFiZv__locals_0_1_0 {
    struct _D3fib8writenumFiZv__params *params;
    uint8_t _D3fib8writenumFiZv1ca;
};

struct _D3fib8writenumFiZv__locals_0_1 {
    struct _D3fib8writenumFiZv__params *params;
    uint8_t _D3fib8writenumFiZv1ca;
};

struct _D3fib8writenumFiZv__locals_0 {
    struct _D3fib8writenumFiZv__params *params;
    uint8_t _D3fib8writenumFiZv1ca;
};

struct _D3fib8writenumFiZv__locals {
    struct _D3fib8writenumFiZv__params *params;
};

union _D3fib8writenumFiZv__locals_max {
    struct _D3fib8writenumFiZv__locals _D3fib8writenumFiZv__locals_l;
    struct _D3fib8writenumFiZv__locals_0 _D3fib8writenumFiZv__locals_0_l;
    struct _D3fib8writenumFiZv__locals_0_0
	_D3fib8writenumFiZv__locals_0_0_l;
    struct _D3fib8writenumFiZv__locals_0_0_0
	_D3fib8writenumFiZv__locals_0_0_0_l;
    struct _D3fib8writenumFiZv__locals_0_0_0_0
	_D3fib8writenumFiZv__locals_0_0_0_0_l;
    struct _D3fib8writenumFiZv__locals_0_1
	_D3fib8writenumFiZv__locals_0_1_l;
    struct _D3fib8writenumFiZv__locals_0_1_0
	_D3fib8writenumFiZv__locals_0_1_0_l;
};

#ifdef STACK_UP
struct _D3fib3fibFiZv__params {
#define _D3fib3fibFiZv__first _D3fib3fibFiZv1ni
    int32_t _D3fib3fibFiZv1ni;
};
#else
struct _D3fib3fibFiZv__params {
    int32_t _D3fib3fibFiZv1ni;
#define _D3fib3fibFiZv__first _D3fib3fibFiZv1ni
};
#endif

struct _D3fib3fibFiZv__locals_0_0_0_1_0_0 {
    struct _D3fib3fibFiZv__params *params;
    int32_t _D3fib3fibFiZv1ai;
    int32_t _D3fib3fibFiZv1bi;
    int32_t _D3fib3fibFiZv1ci;
    int32_t _D3fib3fibFiZv1ii;
};

struct _D3fib3fibFiZv__locals_0_0_0_1_0 {
    struct _D3fib3fibFiZv__params *params;
    int32_t _D3fib3fibFiZv1ai;
    int32_t _D3fib3fibFiZv1bi;
    int32_t _D3fib3fibFiZv1ci;
    int32_t _D3fib3fibFiZv1ii;
};

struct _D3fib3fibFiZv__locals_0_0_0_1 {
    struct _D3fib3fibFiZv__params *params;
    int32_t _D3fib3fibFiZv1ai;
    int32_t _D3fib3fibFiZv1bi;
    int32_t _D3fib3fibFiZv1ci;
    int32_t _D3fib3fibFiZv1ii;
};

struct _D3fib3fibFiZv__locals_0_0_0 {
    struct _D3fib3fibFiZv__params *params;
    int32_t _D3fib3fibFiZv1ai;
    int32_t _D3fib3fibFiZv1bi;
    int32_t _D3fib3fibFiZv1ci;
    int32_t _D3fib3fibFiZv1ii;
};

struct _D3fib3fibFiZv__locals_0_0 {
    struct _D3fib3fibFiZv__params *params;
    int32_t _D3fib3fibFiZv1ai;
    int32_t _D3fib3fibFiZv1bi;
    int32_t _D3fib3fibFiZv1ci;
};

struct _D3fib3fibFiZv__locals_0 {
    struct _D3fib3fibFiZv__params *params;
    int32_t _D3fib3fibFiZv1ai;
    int32_t _D3fib3fibFiZv1bi;
    int32_t _D3fib3fibFiZv1ci;
};

struct _D3fib3fibFiZv__locals {
    struct _D3fib3fibFiZv__params *params;
};

union _D3fib3fibFiZv__locals_max {
    struct _D3fib3fibFiZv__locals _D3fib3fibFiZv__locals_l;
    struct _D3fib3fibFiZv__locals_0 _D3fib3fibFiZv__locals_0_l;
    struct _D3fib3fibFiZv__locals_0_0 _D3fib3fibFiZv__locals_0_0_l;
    struct _D3fib3fibFiZv__locals_0_0_0 _D3fib3fibFiZv__locals_0_0_0_l;
    struct _D3fib3fibFiZv__locals_0_0_0_1 _D3fib3fibFiZv__locals_0_0_0_1_l;
    struct _D3fib3fibFiZv__locals_0_0_0_1_0
	_D3fib3fibFiZv__locals_0_0_0_1_0_l;
    struct _D3fib3fibFiZv__locals_0_0_0_1_0_0
	_D3fib3fibFiZv__locals_0_0_0_1_0_0_l;
};

#ifdef STACK_UP
struct _Dmain__params {
#define _Dmain__first (*((void **) 0))
    int __no_args;
};
#else
struct _Dmain__params {
#define _Dmain__first (*((void **) 0))
    int __no_args;
};
#endif

struct _Dmain__locals_0 {
    struct _Dmain__params *params;
};

struct _Dmain__locals {
    struct _Dmain__params *params;
};

union _Dmain__locals_max {
    struct _Dmain__locals _Dmain__locals_l;
    struct _Dmain__locals_0 _Dmain__locals_0_l;
};

void _D3fib8writenumFiZv(int32_t _D3fib8writenumFiZv1vi)
{
    union _D3fib8writenumFiZv__locals_max locals;
    locals._D3fib8writenumFiZv__locals_l.params =
	(struct _D3fib8writenumFiZv__params *) &_D3fib8writenumFiZv__first;
    {
	int32_t tmp2;
	int32_t tmp3;
	uint8_t *tmp4;
	int32_t tmp5;
	((locals._D3fib8writenumFiZv__locals_0_l._D3fib8writenumFiZv1ca) =
	 (uint8_t) (255));
	(0 /*no action */ );
	if (((int32_t) _D3fib8writenumFiZv1vi >= (int32_t) (10))) {
	    {
		{
		    int32_t tmp1;
		    ((locals._D3fib8writenumFiZv__locals_0_0_0_0_l.
		      _D3fib8writenumFiZv1hi) = (int32_t) (0));
		    (0 /*no action */ );
		    ((locals._D3fib8writenumFiZv__locals_0_0_0_0_l.
		      _D3fib8writenumFiZv1li) = (int32_t) (0));
		    (0 /*no action */ );
		    ((locals._D3fib8writenumFiZv__locals_0_0_0_0_l.
		      _D3fib8writenumFiZv1hi) =
		     (int32_t) (_D3fib8writenumFiZv1vi / (10)));
		    ((locals._D3fib8writenumFiZv__locals_0_0_0_0_l.
		      _D3fib8writenumFiZv1li) =
		     (int32_t) (_D3fib8writenumFiZv1vi % (10)));
		    tmp1 =
			((int32_t)
			 (locals._D3fib8writenumFiZv__locals_0_0_0_0_l.
			  _D3fib8writenumFiZv1hi));
		    _D3fib8writenumFiZv(tmp1);
		    ;
		    ((locals._D3fib8writenumFiZv__locals_0_0_0_0_l.
		      _D3fib8writenumFiZv1ca) =
		     (uint8_t) ((uint8_t)
				((48) +
				 (locals.
				  _D3fib8writenumFiZv__locals_0_0_0_0_l.
				  _D3fib8writenumFiZv1li))));
		}
	    }
	} else {
	    {
		((locals._D3fib8writenumFiZv__locals_0_1_0_l.
		  _D3fib8writenumFiZv1ca) =
		 (uint8_t) ((uint8_t) ((48) + _D3fib8writenumFiZv1vi)));
	    }
	}
	tmp3 = ((int32_t) (1));
	tmp4 =
	    ((uint8_t
	      *) (&(locals._D3fib8writenumFiZv__locals_0_l.
		    _D3fib8writenumFiZv1ca) + 0));
	tmp5 = ((int32_t) (1));
	tmp2 = write(tmp3, tmp4, tmp5);
	(tmp2);
    }
}

void _D3fib3fibFiZv(int32_t _D3fib3fibFiZv1ni)
{
    union _D3fib3fibFiZv__locals_max locals;
    locals._D3fib3fibFiZv__locals_l.params =
	(struct _D3fib3fibFiZv__params *) &_D3fib3fibFiZv__first;
    {
	((locals._D3fib3fibFiZv__locals_0_l._D3fib3fibFiZv1ai) =
	 (int32_t) (0));
	(0 /*no action */ );
	((locals._D3fib3fibFiZv__locals_0_l._D3fib3fibFiZv1bi) =
	 (int32_t) (0));
	(0 /*no action */ );
	((locals._D3fib3fibFiZv__locals_0_l._D3fib3fibFiZv1ci) =
	 (int32_t) (0));
	(0 /*no action */ );
	((locals._D3fib3fibFiZv__locals_0_l._D3fib3fibFiZv1ai) =
	 (int32_t) (0));
	((locals._D3fib3fibFiZv__locals_0_l._D3fib3fibFiZv1bi) =
	 (int32_t) (1));
	((locals._D3fib3fibFiZv__locals_0_l._D3fib3fibFiZv1ci) =
	 (int32_t) (0));
	{
	    {
		uint8_t tmp0;
		((locals._D3fib3fibFiZv__locals_0_0_0_l.
		  _D3fib3fibFiZv1ii) = (int32_t) (0));
		(0 /*no action */ );
		tmp0 =
		    ((int32_t)
		     (locals._D3fib3fibFiZv__locals_0_0_0_l.
		      _D3fib3fibFiZv1ii) < (int32_t) _D3fib3fibFiZv1ni);
		for (; tmp0;
		     ((locals._D3fib3fibFiZv__locals_0_0_0_l.
		       _D3fib3fibFiZv1ii)++)) { {
			{
			    {
				int32_t tmp1;
				int32_t tmp2;
				int32_t tmp3;
				uint8_t *tmp4;
				int32_t tmp5;
				tmp1 =
				    ((int32_t)
				     (locals.
				      _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
				      _D3fib3fibFiZv1ai));
				_D3fib8writenumFiZv(tmp1);
				;
				tmp3 = ((int32_t) (1));
				tmp4 = ((uint8_t *) ((uint8_t *) "\x0A"));
				tmp5 = ((int32_t) (1));
				tmp2 = write(tmp3, tmp4, tmp5);
				(tmp2);
				((locals.
				  _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
				  _D3fib3fibFiZv1ci) =
				 (int32_t) (locals.
					    _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
					    _D3fib3fibFiZv1bi));
				((locals.
				  _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
				  _D3fib3fibFiZv1bi) =
				 (int32_t) ((locals.
					     _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
					     _D3fib3fibFiZv1ai) +
					    (locals.
					     _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
					     _D3fib3fibFiZv1bi)));
				((locals.
				  _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
				  _D3fib3fibFiZv1ai) =
				 (int32_t) (locals.
					    _D3fib3fibFiZv__locals_0_0_0_1_0_0_l.
					    _D3fib3fibFiZv1ci));
			    }
			}
		}
		tmp0 =
		    ((int32_t)
		     (locals._D3fib3fibFiZv__locals_0_0_0_l.
		      _D3fib3fibFiZv1ii) < (int32_t) _D3fib3fibFiZv1ni);
		}
	    }
	}
    }
}

int32_t _Dmain()
{
    union _Dmain__locals_max locals;
    locals._Dmain__locals_l.params =
	(struct _Dmain__params *) &_Dmain__first;
    {
	int32_t tmp1;
	tmp1 = ((int32_t) (25));
	_D3fib3fibFiZv(tmp1);
	;
	return ((0));
    }
}

#ifdef __cplusplus
}
#endif