Я пытаюсь написать sub func для nachOS, но когда я объединяю, это не работает. Не знаю причину.
Подробности:
В ../userprog/syscall.h
Добавить:
#define SC_Sub 11
int Sub(int a, int b);
В ../test/
.globl Sub
.ent Sub
Sub:
addiu $2,$0,SC_Sub
syscall
j $31
.end Sub
После этого я пишу sub.c:
#include "syscall.h"
int main()
{
int result;
result = Sub(100,99);
Halt();
}
в exception.cc:
Я пытаюсь поймать исключение:
case SC_Sub:
op1 = machine->ReadRegister(4);
op2 = machine->ReadRegister(5);
result = op1 - op2;
printf("op1:%d\n",op1);
printf("op2:%d\n",op2);
printf("result:%d\n",result);
machine->WriteRegister(2,result);
machine->WriteRegister(PCReg,machine->ReadRegister(PCReg)+4);
break;
Чтобы объединить, я иду на /code/gmake all
И у меня ошибка: (
../../../gnu-decstation-ultrix/decstation-ultrix/2.95.3/gcc -B../../../gnu-decstation-ultrix/ -T script -N sub.o -o sub
../../../gnu-decstation-ultrix/decstation-ultrix/2.95.3/ld: cannot open crt0.o: No such file or directory
make[1]: *** [sub] Error 1
make[1]: Leaving directory `/home/nxqd/Desktop/nachos-3.4/code/test'
gmake: *** [all] Error 2
Это папка начос. Он не содержит подпрограммы «ошибка», которую я пишу.
http://www.mediafire.com/?g3mnjxz4wdc
enter code here