Моей программе удается читать построчно во входном текстовом файле, и теперь я пытаюсь обработать определенный раздел. Вход выглядит так:
^Other stuff^
CODE
10001100001000100000000000000000
00000000010000110010000000100000
10101100001001000000000000000000
(End of file after CODE section)
Двоичные числа - это инструкция MIPS, и может быть любое количество строк (в качестве примера я использовал 3). Мне нужно разделить каждую 32-битную строку на 6 секций: OpCode, rs, rt, rd, shamt, funct (6, 5, 5, 5, 5, 6 бит соответственно).
Что я уже сделал: моя программа уже может прочитать введенный текст и вызвать соответствующую функцию для каждого раздела. Вот небольшой фрагмент для контекста:
char line[64];
int mode = 0; //for parsing sections, 1 = REGISTER, 2 = MEMORY, 3 = CODE
while (fgets(line, sizeof line, filePtr) != NULL) {
if (strcmp(line, "REGISTERS\n") == 0) {
mode = 1;
}
else if (strcmp(line, "MEMORY\n") == 0) {
mode = 2;
}
else if (strcmp(line, "CODE\n") == 0) {
mode = 3;
}
switch (mode) {
case 1:
parseRegisters(line, registers); //this part works
break;
case 2:
parseMemory(line, memory); //this part works
break;
case 3:
parseCode(line); //have not started writing this function
break;
default:
break;
}
Так что в этом разделе он начинает вызывать parseCode () для каждой двоичной строки. Как мне написать parseCode (), чтобы разделить каждую строку на 6 разделов? Затем мне нужно выполнить различные действия в зависимости от того, к чему декодируются разделы, но я уже рассмотрел это.