/** * 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; } }
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); }
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); }
SWEBDebugInfo::SWEBDebugInfo(char const *sweb_start, char const *sweb_end) : Stabs2DebugInfo(sweb_start, sweb_end, 0) { initialiseSymbolTable(); }