lab1->next=lab2;
lab1=lab2;
break;
} }}}
int segsearch(char *buf)
{
int a=0,s=0; u1=u;
while (u1->next!=NULL){
if (a>0) u1=u1->next;
if (strcmp(u1->segmname,buf)==0) {
s++; break;} a++; }
return s;}
void AnalizEnd(char *str)
{
char s=0,buf[15];int i=0,x=0,f=0,rez;
clearbuf;
while(s!='\n'){
s=str[i++];
if (s!=' ' && s!='\n' && s!='\0'){
buf[x++]=s;}
else {
if (s!='\0'){ clearbuf;x=0;}
else break; }} lab1=lab;q=0;
if (strcmp(lab1->label,buf)==0){ //если в buf метка
f++;}
while (lab1->next!=NULL){
if (q==2) lab1=lab1->next;
if (q==1) q++;
rez=strcmp(lab1->label,buf);
if (q==0) {lab1=lab1->next;q++;}
if (rez==0) {f++;break;}}
if (f==0){ int er=1;error(er,buf,str); }}
void error(int er,char *buf,char *str)
{ switch (er) {
case 0: fprintf(file_w," %s%d%s\n","**ERROR**(",nstr,"): Несоответствие типов !!!"); break;
case 1: int sw=6;int w;print(sw,str,k1,w);
fprintf(file_w," %s%d%s%s%s\n","**ERROR**(",--nstr,"): неизвестное имя ",buf," !!!");
break;
case 2: sw=6;print(sw,str,k1,w);
fprintf(file_w," %s%d%s\n","**ERROR**(",--nstr,"): некорректная инструкция."); break;
case 3: fprintf(file_w," %s%d%s%s%s\n","**ERROR**(",nstr,"): переменная '",buf,"' уже существует."); break; }}
void CodeCmp(char *str)
{ unsigned char w;
int sw=0; k1=k; progon();
do {
if (f1==12){
w=genbyte2(str);
z++;sw=1;print(sw,str,k1,w);break;}
if (f2<4 && k1->op1<4 && k1->op1!=0){
if (f3>10 && k1->op2>10){
z++;w=genbyte2(str);sw=5;
print(sw,str,k1,w);break; } }
if (f2<4 && k1->op1<4 && k1->op1!=0) {
if (f3<9 && k1->op2<9){
z++;w=genbyte2(str);sw=5;
print(sw,str,k1,w);break;}}
if (f2>4 || k1->op1>4){
if (f3==10 && k1->op2==10){
z++;sw=2;print(sw,str,k1,w);break;}}
if (f2>4 && f2!=9 && k1->op1!=9){
if (k1->op1>4 && k1->op2!=10){
if ((f3>4 && f3!=10 ) && (k1->op2>4 && f3!=10)){
z++; w=genbyte2(str);
sw=3; print(sw,str,k1,w); break;}}}
if (f2==9){
if(k1->op1==9){
if(f3>4 || k1->op2>4){ z++;
w=genbyte2(str);
sw=4;print(sw,str,k1,w);break; }}}
if (f2>4 && f2!=9){
if (k1->op1>4 && f2<10){
if (f3<4 && k1->op2<4){
z++;sw=5;
AnalizRegister(str);
w=genbyte2(str);
print(sw,str,k1,w);break;}}}
if (f2>9 && f2!=9){
if (k1->op1>9){
if (f3<4 && k1->op2<4){
z++;sw=5;
AnalizRegister(str);
w=genbyte2(str);
print(sw,str,k1,w);break;}}}
if (z==0) k1=k1->next;
}
while(z!=1); z=0;}
void progon()
{
int q=1;
while (k1->com!=NULL){
if (f1!=q){
q++; k1=k1->next;}
else break; }}
void AnalizRegister(char *str)
{ loadreg;int a=0,z=0,c=0,j=0,x=0,i;
unsigned char s=0,buf[15],fd[5];
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.