napokon pobedio :D :D prva faza gotova!
» Click to show Spoiler - click again to hide... «
ovaj C kod
» Click to show Spoiler - click again to hide... «
int No_Type;
int b;
unsigned function(int x)
{
return 2u;
}
int main()
{
int b;
int k;
unsigned q;
q=function(2);
b=2;
k=3;
k=2+3;
b=k*2;
if(b<k) {
while(b!=k) {
b=k;
}
}
while(b>3) {
}
}
kad prodje leksicku, sintaksnu i semanticku analizu, prelazi u ovaj asemblerski:
» Click to show Spoiler - click again to hide... «
No_Type:
WORD 1
b:
WORD 1
function
PUSH %14
MOV %15,%14
@function_body
MOV $2u,%13
JMP @function_exit
@function_exit
MOV %14,%15
POP %14
RET
main
PUSH %14
MOV %15,%14
PUSH $2
CALL function
ADDU %15,$4,%15
MOV %13,%0
MOV %0,-12(%14)
MOV $2,-4(%14)
MOV $3,-8(%14)
ADDS $2,$3,%0
MOV $2,-8(%14)
MULS -8(%14),$2,%1
MOV -8(%14),-4(%14)
@if0
CMPS -4(%14),-8(%14)
JGES @false0
@true0
@while1
CMPS -4(%14),-8(%14)
JEQ @false1
@true1
MOV -8(%14),-4(%14)
JMP @while1
@false1
@exit1
JMP @exit0
@false0
@exit0
@while2
CMPS -4(%14),$3
JLES @false2
@true2
JMP @while2
@false2
@exit2
SUBU %15,$12,%15
@main_body
@main_exit
MOV %14,%15
POP %14
RET
sreca sreca radost
ehhh... sad posle nedelju dana nespavanja i preko milion sati za kompom, moze jedan sleep :D