Ejemplo n.º 1
0
/**
 * Entry function which will process the assembled code and perform the required actions
 */
void processAssembledCode(char * assembled, unsigned int length, unsigned short numberSymbols,
		int coreId, int numberActiveCores, int baseHostPid) {
	stopInterpreter=0;
	currentSymbolEntries=0;
	localCoreId=coreId;
	numActiveCores=numberActiveCores;
	symbolTable=initialiseSymbolTable(numberSymbols);
	hostCoresBasePid=baseHostPid;
	unsigned int i;
	for (i=0;i<length;) {
		unsigned short command=getUShort(&assembled[i]);
		i+=sizeof(unsigned short);
		if (command == LET_TOKEN) i=handleLet(assembled, i);
		if (command == ARRAYSET_TOKEN) i=handleArraySet(assembled, i);
		if (command == DIMARRAY_TOKEN) i=handleDimArray(assembled, i, 0);
		if (command == DIMSHAREDARRAY_TOKEN) i=handleDimArray(assembled, i, 1);
		if (command == PRINT_TOKEN) i=handlePrint(assembled, i);
		if (command == STOP_TOKEN) return;
		if (command == SYNC_TOKEN) i=handleSync(assembled, i);
		if (command == IF_TOKEN) i=handleIf(assembled, i);
		if (command == IFELSE_TOKEN) i=handleIf(assembled, i);
		if (command == FOR_TOKEN) i=handleFor(assembled, i);
		if (command == GOTO_TOKEN) i=handleGoto(assembled, i);
		if (command == INPUT_TOKEN) i=handleInput(assembled, i);
		if (command == INPUT_STRING_TOKEN) i=handleInputWithString(assembled, i);
		if (command == SEND_TOKEN) i=handleSend(assembled, i);
		if (command == RECV_TOKEN) i=handleRecv(assembled, i);
		if (command == RECVTOARRAY_TOKEN) i=handleRecvToArray(assembled, i);
		if (command == SENDRECV_TOKEN) i=handleSendRecv(assembled, i);
		if (command == SENDRECVARRAY_TOKEN) i=handleSendRecvArray(assembled, i);
		if (command == BCAST_TOKEN) i=handleBcast(assembled, i);
		if (command == REDUCTION_TOKEN) i=handleReduction(assembled, i);
		if (stopInterpreter) return;
	}
}
Ejemplo n.º 2
0
void runIntepreter(char * assembled, unsigned int length, unsigned short numberSymbols,
                   int coreId, int numberActiveCores, int threadId) {
    stopInterpreter[threadId]=0;
    currentSymbolEntries[threadId]=-1;
    fnLevel[threadId]=0;
    localCoreId[threadId]=coreId;
    numActiveCores[threadId]=numberActiveCores;
    symbolTable[threadId]=initialiseSymbolTable(numberSymbols);
    processAssembledCode(assembled, 0, length, threadId);
}
Ejemplo n.º 3
0
void runIntepreter(char * assembled, unsigned int length, unsigned short numberSymbols,
                   int coreId, int numberActiveCores, int baseHostPid) {
    stopInterpreter=0;
    currentSymbolEntries=-1;
    fnLevel=0;
    localCoreId=coreId;
    numActiveCores=numberActiveCores;
    symbolTable=initialiseSymbolTable(numberSymbols);
    hostCoresBasePid=baseHostPid;
    processAssembledCode(assembled, 0, length);
}
Ejemplo n.º 4
0
SWEBDebugInfo::SWEBDebugInfo(char const *sweb_start, char const *sweb_end) : Stabs2DebugInfo(sweb_start, sweb_end, 0) {
    initialiseSymbolTable();
}