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