Well here's a very simple C example of the code generation from vbcc...
/*
* test of c...
*/
void test(char *dst, char *src, int len)
{
int i;
for(i=0;i<len;i++)
{
*(dst+i) = *(src+i);
}
}
static char in1[] = { "Hello Nefmoto!" };
static char in2[] = { "Hello World!" };
static char in3[] = { "Hello Testing" };
int test2(int va)
{
char out[16];
int result = 0;
switch(va)
{
case 0:
test(out, in1, sizeof(in1) );
result = 1111;
break;
case 1:
test(out, in2, sizeof(in2) );
result = 2222;
break;
case 2:
test(out, in3, sizeof(in3) );
result = 3333;
break;
default:
test(out, in1, sizeof(in1) );
result = 4444;
break;
}
return result;
}
and here's the generated output.. using the -tasking compiler option...
$EXTEND
$MODEL(SMALL)
SCODE SECTION CODE WORD PUBLIC 'CPROGRAM'
public _test
_test proc far
sub R0,#8
mov [R0],R12
mov [R0+#2],R13
mov [R0+#4],R14
mov R10,#0
mov [R0+#6],R10
jmpr cc_uc,l3
l2:
mov R2,[R0+#2]
mov R1,[R0+#6]
add R2,R1
mov R3,[R0]
mov R1,[R0+#6]
add R3,R1
movb [R3],[R2]
l5:
mov R10,[R0+#6]
add R10,#1
mov [R0+#6],R10
l3:
mov R10,[R0+#6]
mov R1,[R0+#4]
cmp R10,R1
jmpr cc_slt,l2
l4:
l1:
add R0,#8
rets
_test endp
public _test2
_test2 proc far
sub R0,#20
mov [R0],R12
mov R10,#0
mov [R0+#18],R10
mov R15,[R0]
jmpr cc_z,l11
cmp R15,#1
jmpr cc_z,l12
cmp R15,#2
jmpr cc_z,l13
jmpr cc_uc,l14
l11:
mov R14,#15
mov R13,#DPPX:l6
mov R2,R0
add R2,#2
mov R12,R2
calls _test
mov R10,#1111
mov [R0+#18],R10
jmpr cc_uc,l10
l12:
mov R14,#13
mov R13,#DPPX:l7
mov R2,R0
add R2,#2
mov R12,R2
calls _test
mov R10,#2222
mov [R0+#18],R10
jmpr cc_uc,l10
l13:
mov R14,#14
mov R13,#DPPX:l8
mov R2,R0
add R2,#2
mov R12,R2
calls _test
mov R10,#3333
mov [R0+#18],R10
jmpr cc_uc,l10
l14:
mov R14,#15
mov R13,#DPPX:l6
mov R2,R0
add R2,#2
mov R12,R2
calls _test
mov R10,#4444
mov [R0+#18],R10
l10:
mov R4,[R0+#18]
l9:
add R0,#20
rets
_test2 endp
SCODE ends
NDATA SECTION LDAT WORD PUBLIC
l6 label word
db 72
db 101
db 108
db 108
db 111
db 32
db 78
db 101
db 102
db 109
db 111
db 116
db 111
db 33
db 0
l7 label word
db 72
db 101
db 108
db 108
db 111
db 32
db 87
db 111
db 114
db 108
db 100
db 33
db 0
l8 label word
db 72
db 101
db 108
db 108
db 111
db 32
db 84
db 101
db 115
db 116
db 105
db 110
db 103
db 0
NDATA ends
REGDEF R0-R15
end