view CbC-examples/test_csp1.c @ 45:d645ac0f55d6

add instration howto for PS3 to CbC-INSTALL.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 29 Jan 2010 12:18:08 +0900
parents f9b1a53df341
children
line wrap: on
line source

#include<stdio.h>
#include<stdlib.h>

//static __code (*csp)(int, int, int, int);

__code cs_end (int a);
__code cs0 (int a, int b, int c, int d);
void* freturn ();
__code cs_goto (int a, int b, int c, int d);
int function (double a, float b, int c);
int main (int argc, char **argv);


__code cs_goto(int a, int b, int c, int d){
	__code (*csp)(int, int, int, int);
	csp = freturn();
	printf("csp = %x.\n", csp);

	//printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g);
	//printf("cs_goto : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d);
	//printf("cs_goto : a-4=%d, a-8=%d, a-12=%d, a-16=%d.\n", *(&a-4), *(&a-8), *(&a-12), *(&a-16));
	//printf("cs_goto : cs0(a, b, c, d)\n");
#ifdef INDIRECT
	goto csp(b+a, d+b, a+c, c+d);
#else
	goto cs0(b+a, d+b, a+c, c+d);
#endif
}

__code cs_end(int a){
	printf("cs_exit : a=%d.\n", a);
	exit(a);
	goto cs_end(a);
}

__code cs0(int a, int b, int c, int d){
	//printf("cs0     : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g);
	printf("cs_cs0  : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d);
	goto cs_end( (int)(20*a + 30*b + 40*c + 50*d) );
}


void* freturn(){
	return cs0;
}

int function(double a, float b, int c){

	printf("function:\n");
	printf("a=%lf, b=%f, c=%d\n", a, b, c);
	//goto cs_goto(10, 20, 30, 40);
	goto cs_goto(10, 20, 30, 40);
}

int main(int argc, char **argv){
	//csp = cs0;
	function(10.01, 20.02, 30);
	return 0;
}