From ef5bf640850733d98cc3bf18c8f3cf90e24037cd Mon Sep 17 00:00:00 2001 From: 0niiC Date: Sun, 9 Nov 2025 23:40:38 +0700 Subject: [PATCH] Changes to be committed: new file: infolabs/modelingfonneiman/code.c new file: infolabs/modelingfonneiman/tmp.out --- infolabs/modelingfonneiman/code.c | 95 +++++++++++++++++++++++++++++ infolabs/modelingfonneiman/tmp.out | Bin 0 -> 15608 bytes 2 files changed, 95 insertions(+) create mode 100644 infolabs/modelingfonneiman/code.c create mode 100755 infolabs/modelingfonneiman/tmp.out diff --git a/infolabs/modelingfonneiman/code.c b/infolabs/modelingfonneiman/code.c new file mode 100644 index 0000000..ec9bc15 --- /dev/null +++ b/infolabs/modelingfonneiman/code.c @@ -0,0 +1,95 @@ +#include +int pt(int prog[], int cmd,int acc,int pc); + +int main() { + + int prog[] = { + 2, 5, // load 5 + 3, 3, // mult 3 + 1, // print acc + 4, 7, // jump 7 + 2, 0, // load 0 + 5, 11,// jz 11 + 2, 2, // load 2 + 5, 1, // jz 1 + 3, 4, // mul 4 + 1, // print + 0 // stop + }; + + int cmd, pc, acc; + cmd = pc = acc = 0; + + while(pc != -1){ + cmd = prog[pc]; + switch(cmd){ + case 0: //Проверка на команду остановки + printf("STOP\t ACC = %d\t PC = %d",acc,pc); + pc = -1; + break; + + case 1: // Комманда 1 - вывод регистра + pt(prog,cmd,acc,pc); + pc++; + break; + + case 2: // Комманда 2 - Присвоить регистру число + acc = prog[pc+1];// из след ячейки памяти + pt(prog,cmd,acc,pc); + pc+=2; + break; + + case 3: // Комманда 3 - Умножить регистр на число + acc *= prog[pc+1];// в след ячейке памяти + pt(prog,cmd,acc,pc); + pc +=2; + break; + + case 4: // Комманда 4 - Безусловный переход на указанную + pt(prog,cmd,acc,pc); // ячейку памяти + pc = prog[pc+1]; + break; + + case 5: // Комманда 5 - Переход на указанную ячейку + pt(prog,cmd,acc,pc);// памяти если регистр равен 0 + if(acc == 0){ + pc = prog[pc+1]; + } + else({ + pc+=2; + }); + break; + + default: printf("err\n");return 1; + } + } + return 0; +} + + // Блок отвечающий за вывод в терминал + // значиний в момент выполнения комманд +int pt(int prog[],int cmd,int acc,int pc){ + printf("\n"); + printf("cmd: %d\n",cmd); + switch(cmd){ + case 1: + printf("\tPrint acc\n\t\tacc = %d\n",acc); + printf("\t\tcurr pc = %d",pc);break; + case 2: + printf("\tLoad acc\n\t\tacc = %d\n",acc); + printf("\t\tcurr pc = %d",pc);break; + case 3: + printf("\tMult acc\n\t\tacc = %d\n",acc); + printf("\t\tcurr pc = %d",pc);break; + case 4: + printf("\tJump to\n\t\tto = %d\n",prog[pc+1]); + printf("\t\tcurr pc = %d",pc);break; + case 5: + if(acc==0){ + printf("\tJump to if acc zero\n\t\tto = %d\n",prog[pc+1]); + }else(printf("\tJump to if acc zero\n\t\tacc != 0\n")); + printf("\t\tcurr pc = %d",pc); + break; + } + printf("\n"); +} diff --git a/infolabs/modelingfonneiman/tmp.out b/infolabs/modelingfonneiman/tmp.out new file mode 100755 index 0000000000000000000000000000000000000000..e1bbad1b9bb67e2c075e48833c951675f8b5e469 GIT binary patch literal 15608 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