mars.mips.instructions.syscalls
Class AbstractSyscall

java.lang.Object
  extended by mars.mips.instructions.syscalls.AbstractSyscall
All Implemented Interfaces:
Syscall
Direct Known Subclasses:
SyscallClose, SyscallConfirmDialog, SyscallExit, SyscallExit2, SyscallInputDialogDouble, SyscallInputDialogFloat, SyscallInputDialogInt, SyscallInputDialogString, SyscallMessageDialog, SyscallMessageDialogDouble, SyscallMessageDialogFloat, SyscallMessageDialogInt, SyscallMessageDialogString, SyscallMidiOut, SyscallMidiOutSync, SyscallOpen, SyscallPrintChar, SyscallPrintDouble, SyscallPrintFloat, SyscallPrintInt, SyscallPrintIntBinary, SyscallPrintIntHex, SyscallPrintIntUnsigned, SyscallPrintString, SyscallRandDouble, SyscallRandFloat, SyscallRandInt, SyscallRandIntRange, SyscallRandSeed, SyscallRead, SyscallReadChar, SyscallReadDouble, SyscallReadFloat, SyscallReadInt, SyscallReadString, SyscallSbrk, SyscallSleep, SyscallTime, SyscallWrite

public abstract class AbstractSyscall
extends Object
implements Syscall

Abstract class that a MIPS syscall system service may extend. A qualifying service must be a class in the mars.mips.instructions.syscalls package that implements the Syscall interface, must be compiled into a .class file, and its .class file must be in the same folder as Syscall.class. Mars will detect a qualifying syscall upon startup, create an instance using its no-argument constructor and add it to its syscall list. When its service is invoked at runtime ("syscall" instruction with its service number stored in register $v0), its simulate() method will be invoked.


Constructor Summary
AbstractSyscall(int number, String name)
          Constructor is provided so subclass may initialize instance variables.
 
Method Summary
 String getName()
          Return the name you have chosen for this syscall.
 int getNumber()
          Return the assigned service number.
 void setNumber(int num)
          Set the service number.
abstract  void simulate(ProgramStatement statement)
          Performs syscall function.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractSyscall

public AbstractSyscall(int number,
                       String name)
Constructor is provided so subclass may initialize instance variables.

Parameters:
number - default assigned service number
name - service name which may be used for reference independent of number
Method Detail

getName

public String getName()
Return the name you have chosen for this syscall. This can be used by a MARS user to refer to the service when choosing to override its default service number in the configuration file.

Specified by:
getName in interface Syscall
Returns:
service name as a string

setNumber

public void setNumber(int num)
Set the service number. This is provided to allow MARS implementer or user to override the default service number.

Specified by:
setNumber in interface Syscall
Parameters:
num - specified service number to override the default.

getNumber

public int getNumber()
Return the assigned service number. This is the number the MIPS programmer must store into $v0 before issuing the SYSCALL instruction.

Specified by:
getNumber in interface Syscall
Returns:
assigned service number

simulate

public abstract void simulate(ProgramStatement statement)
                       throws ProcessingException
Performs syscall function. It will be invoked when the service is invoked at simulation time. Service is identified by value stored in $v0.

Specified by:
simulate in interface Syscall
Parameters:
statement - ProgramStatement object for this syscall instruction.
Throws:
ProcessingException