void Chai_instance::_move(Chai_instance &other) { _return(); //m_chai = other.m_chai; //other.m_chai = nullptr; }
Report ElasticProblem2DOnCellV2<dim>::calculate_cells_stress () { cells_stress .clear (); dealii::QGauss<dim> quadrature_formula(2); dealii::FEValues<dim> fe_values (finite_element, quadrature_formula, dealii::update_gradients | dealii::update_quadrature_points | dealii::update_JxW_values); const uint8_t dofs_per_cell = finite_element.dofs_per_cell; const uint8_t num_quad_points = quadrature_formula.size(); typename dealii::DoFHandler<dim>::active_cell_iterator cell = this->domain.dof_handler.begin_active(); typename dealii::DoFHandler<dim>::active_cell_iterator endc = this->domain.dof_handler.end(); std::vector<unsigned int> local_dof_indices (dofs_per_cell); size_t cell_num = 0; for (; cell != endc; ++cell) { fe_values .reinit (cell); dbl area = 0.0; for(st i = 0; i < num_quad_points; ++i) area += fe_values.JxW(o); dbl mat_id = cell->material_id(); std::array<dbl,2> deform; for (auto i : {x, y}) { deform[i][j] = 0.0; for(auto i : {1, 2, 3, 4}) { dbl summ = 0.0; for (size_t q_point = 0; q_point < num_quad_points; ++q_point) summ += fe_values.shape_grad (n, q_point)[i] * fe_values.JxW(q_point); deform[i] += solution(cell->vertex_dof_index(n, 0)) * summ; }; deform[i] /= area; }; }; REPORT_USE( Report report; report.result = true; _return (report););
// receives out_buf. bool recv_buf(SOCKET sock, char *out_buf, struct sockaddr_in *remote) { memset(remote, 0, sizeof(struct sockaddr_in)); int sender_size = sizeof(struct sockaddr_in); // Receive buffer // Receive // No receive loop necessary: each call to recvfrom is 1 packet // Blocking: goes to sleep when no packet immediately available while (true) { clock_t c1 = clock(); fd_set fd; FD_ZERO(&fd); FD_SET(sock, &fd); struct timeval tv; tv.tv_sec = 9; tv.tv_usec = 0; int res = select(0, &fd, NULL, NULL, &tv); if (res == 0) continue; else if (res == SOCKET_ERROR) { printf("[server] select() socket error %d\n", WSAGetLastError()); _return(1); } int bytes = recvfrom(sock, out_buf, MAX_DNS_SIZE, NULL, (struct sockaddr*)remote, &sender_size); if (bytes == SOCKET_ERROR) { // also catches too many bytes, so we're ok printf("[server] recv() socket error %d\n", WSAGetLastError()); _return(1); } if (bytes <= sizeof(FixedDNSHeader)) { printf("\n ++ invalid reply: smaller than fixed header\n"); return false; } printf("[server] received a buffer\n"); return true; } }
//========================================================================== // Carga un fichero BMP. Devuelve un puntero al bitmap si hay exito, // y NULL si no. // Aquí se utiliza la función de SDL de carga de BMP: SDL_LoadBMP. // Suministramos otra función que no utiliza la carga de SDL. //========================================================================== SDL_Surface *carga_bmp_SDL(char *sFichero) { int i, j; Uint8 *rowhi, *rowlo; Uint8 *tmpbuf, tmpch; SDL_Surface *image; T_FUNC_IN; image = SDL_LoadBMP(sFichero); if (image == NULL) { log_msj("\n Incapaz de cargar %s: %s\n", sFichero, SDL_GetError()); _return(NULL); } /* GL surfaces are upsidedown and RGB, not BGR :-) */ tmpbuf = (Uint8 *) dar_m(image->pitch, "carga_bmp_SDL 1"); if (tmpbuf == NULL) { _return(NULL); } rowhi = (Uint8 *) image->pixels; rowlo = rowhi + (image->h * image->pitch) - image->pitch; for (i = 0; i < image->h / 2; ++i) { for (j = 0; j < image->w; ++j) { tmpch = rowhi[j * 3]; rowhi[j * 3] = rowhi[j * 3 + 2]; rowhi[j * 3 + 2] = tmpch; tmpch = rowlo[j * 3]; rowlo[j * 3] = rowlo[j * 3 + 2]; rowlo[j * 3 + 2] = tmpch; } memcpy(tmpbuf, rowhi, image->pitch); memcpy(rowhi, rowlo, image->pitch); memcpy(rowlo, tmpbuf, image->pitch); rowhi += image->pitch; rowlo -= image->pitch; } liberar_m(tmpbuf); _return(image); }
bool send_buf(SOCKET sock, char *buf, int len, struct sockaddr_in remote) { int sender_size = sizeof(struct sockaddr_in); if (sendto(sock, buf, len, 0, (struct sockaddr*)&remote, sender_size) == SOCKET_ERROR) { printf("[server] sendto() error %d\n", WSAGetLastError()); _return(1); } return true; }
void BytecodeAssembler::_return(BasicType bt) { switch (bt) { case T_BOOLEAN: case T_CHAR: case T_BYTE: case T_SHORT: case T_INT: ireturn(); break; case T_FLOAT: freturn(); break; case T_DOUBLE: dreturn(); break; case T_LONG: lreturn(); break; case T_OBJECT: case T_ARRAY: areturn(); break; case T_VOID: _return(); break; default: ShouldNotReachHere(); } }
int main (int argc, char *argv[]) { int ret= ERR_OK; if(argc < 2) ret= ERR_ARG; else { if(!strcmp(argv[ARG_CMD], CMD_ADD)) { if(argc != 4) ret= ERR_ARG; else { char buf[CRED_MAX_CREDENTIAL_BLOB_SIZE+1]; int cnt; cnt= _read(0, buf, sizeof(buf)); if(cnt == -1) ret= ERR_RD; else if(cnt == sizeof(buf)) ret= ERR_TOOLONG; else { CREDENTIAL cred = {0}; cred.Type = CRED_TYPE_GENERIC; cred.TargetName = LPSTR(argv[ARG_APP]); cred.CredentialBlobSize= cnt; cred.CredentialBlob= (LPBYTE)buf; cred.Persist= CRED_PERSIST_LOCAL_MACHINE; cred.UserName= LPSTR(argv[ARG_USER]); ret= ::CredWrite (&cred, 0)? ERR_OK:ERR_CRED; } } } else if(argc != 3) ret= ERR_ARG; else if(!strcmp(argv[ARG_CMD], CMD_GETP) || !strcmp(argv[ARG_CMD], CMD_GETN)) { PCREDENTIAL pcred; if(::CredRead (LPSTR(argv[ARG_APP]), CRED_TYPE_GENERIC, 0, &pcred)) { if(!strcmp(argv[ARG_CMD], CMD_GETP)) { if(_write(1, pcred->CredentialBlob,pcred->CredentialBlobSize) == -1) ret= ERR_WR; } else { if(_write(1, pcred->UserName, strlen(pcred->UserName)) == -1) ret= ERR_WR; } // must free memory allocated by CredRead()! ::CredFree (pcred); } else ret= ERR_CRED; } else if(!strcmp(argv[ARG_CMD], CMD_RM)) { if(::CredDelete (LPCSTR(argv[ARG_APP]), CRED_TYPE_GENERIC, 0) == false) ret= ERR_CRED; } else ret= ERR_CMD; } return(_return(ret)); }
//----------------------------------------------------------------------------- // // 命令コマンドを解釈してバイナリに変換 // //----------------------------------------------------------------------------- bool encode(char* instName, char* buffer, map<uint32_t, string>& labelNames, uint32_t currentLine, uint32_t& code, bool& useLabel) { uint32_t rs = 0; uint32_t rt = 0; uint32_t rd = 0; uint32_t imm = 0; double d = 0; char label[MAX_LINE_SIZE]; char dummy[MAX_LINE_SIZE]; if (eq(instName, "add")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _add(rs, rt, rd); return true; } } if (eq(instName, "sub")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _sub(rs, rt, rd); return true; } } if (eq(instName, "mul")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _mul(rs, rt, rd); return true; } } if (eq(instName, "and")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _and(rs, rt, rd); return true; } } if (eq(instName, "or")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _or(rs, rt, rd); return true; } } if (eq(instName, "nor")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _nor(rs, rt, rd); return true; } } if (eq(instName, "xor")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _xor(rs, rt, rd); return true; } } if (eq(instName, "addi")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _addi(rs, rt, imm); return true; } } if (eq(instName, "subi")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _subi(rs, rt, imm); return true; } } if (eq(instName, "muli")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _muli(rs, rt, imm); return true; } } if (eq(instName, "slli")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _slli(rs, rt, imm); return true; } } if (eq(instName, "srai")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _srai(rs, rt, imm); return true; } } if (eq(instName, "andi")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _andi(rs, rt, imm); return true; } } if (eq(instName, "ori")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _ori(rs, rt, imm); return true; } } if (eq(instName, "nori")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _nori(rs, rt, imm); return true; } } if (eq(instName, "xori")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _xori(rs, rt, imm); return true; } } if (eq(instName, "fadd")) { int n = sscanf(buffer, formFFF, dummy, &rd, &rs, &rt); if (n == 4) { code = _fadd(rs, rt, rd); return true; } } if (eq(instName, "fsub")) { int n = sscanf(buffer, formFFF, dummy, &rd, &rs, &rt); if (n == 4) { code = _fsub(rs, rt, rd); return true; } } if (eq(instName, "fmul")) { int n = sscanf(buffer, formFFF, dummy, &rd, &rs, &rt); if (n == 4) { code = _fmul(rs, rt, rd); return true; } } if (eq(instName, "fmuln")) { int n = sscanf(buffer, formFFF, dummy, &rd, &rs, &rt); if (n == 4) { code = _fmuln(rs, rt, rd); return true; } } if (eq(instName, "finv")) { int n = sscanf(buffer, formFF, dummy, &rd, &rs); if (n == 3) { code = _finv(rs, rt, rd); return true; } } if (eq(instName, "fsqrt")) { int n = sscanf(buffer, formFF, dummy, &rd, &rs); if (n == 3) { code = _fsqrt(rs, rt, rd); return true; } } if (eq(instName, "fmov")) { int n = sscanf(buffer, formFF, dummy, &rd, &rs); if (n == 3) { code = _fmov(rs, rt, rd); return true; } } if (eq(instName, "fneg")) { int n = sscanf(buffer, formFF, dummy, &rd, &rs); if (n == 3) { code = _fneg(rs, rt, rd); return true; } } if (eq(instName, "imovf")) { int n = sscanf(buffer, formFR, dummy, &rt, &rs); if (n == 3) { code = _imovf(rs, rt, rd); return true; } } if (eq(instName, "fmovi")) { int n = sscanf(buffer, formRF, dummy, &rt, &rs); if (n == 3) { code = _fmovi(rs, rt, rd); return true; } } // to use ALU if (eq(instName, "mvlo")) { int n = sscanf(buffer, formRI, dummy, &rt, &imm); if (n == 3) { code = _mvlo(rt, rt, imm); return true; } } if (eq(instName, "mvhi")) { int n = sscanf(buffer, formRI, dummy, &rt, &imm); if (n == 3) { code = _mvhi(rt, rt, imm); return true; } } if (eq(instName, "fmvlo")) { int n = sscanf(buffer, formFI, dummy, &rt, &imm); if (n == 3) { code = _fmvlo(rt, rt, imm); return true; } } if (eq(instName, "fmvhi")) { int n = sscanf(buffer, formFI, dummy, &rt, &imm); if (n == 3) { code = _fmvhi(rt, rt, imm); return true; } } if (eq(instName, "j")) { int n = sscanf(buffer, formL, dummy, label); if (n == 2) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _j(0); return true; } } if (eq(instName, "beq")) { int n = sscanf(buffer, formRRL, dummy, &rs, &rt, label); if (n == 4) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _beq(rs, rt, imm); return true; } } if (eq(instName, "blt")) { int n = sscanf(buffer, formRRL, dummy, &rs, &rt, label); if (n == 4) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _blt(rs, rt, imm); return true; } } if (eq(instName, "ble")) { int n = sscanf(buffer, formRRL, dummy, &rs, &rt, label); if (n == 4) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _ble(rs, rt, imm); return true; } } if (eq(instName, "fbeq")) { int n = sscanf(buffer, formFFL, dummy, &rs, &rt, label); if (n == 4) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _fbeq(rs, rt, imm); return true; } } if (eq(instName, "fblt")) { int n = sscanf(buffer, formFFL, dummy, &rs, &rt, label); if (n == 4) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _fblt(rs, rt, imm); return true; } } if (eq(instName, "fble")) { int n = sscanf(buffer, formFFL, dummy, &rs, &rt, label); if (n == 4) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _fble(rs, rt, imm); return true; } } if (eq(instName, "jr")) { int n = sscanf(buffer, formR, dummy, &rs); if (n == 2) { code = _jr(rs, rt, rd); return true; } } if (eq(instName, "call")) { int n = sscanf(buffer, formL, dummy, label); if (n == 2) { labelNames[currentLine] = string(label); // cerr << "assigned (" << currentLine << ", " << string(label) << ") in labelNames" << endl; useLabel = true; code = _call(0); return true; } } if (eq(instName, "callr")) { int n = sscanf(buffer, formR, dummy, &rs); if (n == 2) { code = _callr(rs, rt, rd); return true; } } if (eq(instName, "return")) { int n = sscanf(buffer, form, dummy); if (n == 1) { code = _return(rs, rt, rd); return true; } } if (eq(instName, "ldr")) { int n = sscanf(buffer, formRRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _ldr(rs, rt, rd); return true; } } if (eq(instName, "fldr")) { int n = sscanf(buffer, formFRR, dummy, &rd, &rs, &rt); if (n == 4) { code = _fldr(rs, rt, rd); return true; } } if (eq(instName, "sti")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _sti(rs, rt, imm); return true; } } if (eq(instName, "ldi")) { int n = sscanf(buffer, formRRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _ldi(rs, rt, imm); return true; } } if (eq(instName, "fsti")) { int n = sscanf(buffer, formFRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _fsti(rs, rt, imm); return true; } } if (eq(instName, "fldi")) { int n = sscanf(buffer, formFRI, dummy, &rt, &rs, &imm); if (n == 4) { code = _fldi(rs, rt, imm); return true; } } if (eq(instName, "inputb")) { int n = sscanf(buffer, formR, dummy, &rt); if (n == 2) { code = _inputb(rs, rt, rd); return true; } } if (eq(instName, "outputb")) { int n = sscanf(buffer, formR, dummy, &rt); if (n == 2) { code = _outputb(rs, rt, rd); return true; } } if (eq(instName, "halt")) { int n = sscanf(buffer, form, dummy); if (n == 1) { code = _halt(rs, rt, rd); return true; } } if (eq(instName, "dump")) { int n = sscanf(buffer, form, dummy); if (n == 1) { code = _dump(rs, rt, rd); return true; } } return false; }
Chai_instance::~Chai_instance() { _return(); }
//=========================================================================== void *carga_bmp(char *sFichero, int *TamX, int *TamY) { FILE *fp; // Open file pointer void *bits; // Bitmap pixel bits size_t bitsize, // Size of bitmap infosize, // Size of header information bytleidos; // Número de bytes leidos miBitmapFicCab header = { 0x00, 0x0000, 0x00, 0x00, 0x0000 }; // File header miByte14 headerLec; T_FUNC_IN; // Try opening the file; use "rb" mode to read this *binary* file. fp = abre_fichero(sFichero, "rb"); if (fp == NULL) { _return(NULL); } // No puedo hacer una lectura con header como miBitmapFicCab // Nos fabricamos : miByte14 headerLec; // -- // Para no utilizar el mismo nombre que en windows he definido // BITMAPFILEHEADER como miBitmapFicCab para que sea común con Linux. // El caso es que el sizeof de cada uno da diferente con los mismos // contenidos ???????????????!!!!!!!!!!!!!!!!!! // El sizeof(BITMAPFILEHEADER) = 14 y se supone que miBitmapFicCab // lo hemos definido igual // pero resulta que sizeof(miBitmapFicCab) = 16 !!!!!???????? // // Así que meto a pedal el valor esperado :: 14 con miByte14 // o con sizeof(headerLec) // // Read the file header and any following bitmap information... bytleidos = fread(&headerLec, sizeof(headerLec), 1, fp); if (bytleidos < 1) { log_msj("\n Lectura de la cabecera de Bitmap [%s]", sFichero); fclose(fp); _return(NULL); }; header.bfTipo = headerLec.bCad[1] * 0x100 + headerLec.bCad[0]; header.bfSize = headerLec.bCad[5] * 0x1000000 + headerLec.bCad[4] * 0x10000 + headerLec.bCad[3] * 0x100 + headerLec.bCad[2]; header.bfReservado1 = headerLec.bCad[7] * 0x100 + headerLec.bCad[6]; header.bfReservado2 = headerLec.bCad[9] * 0x100 + headerLec.bCad[8]; header.bfBitsSuma = headerLec.bCad[13] * 0x1000000 + headerLec.bCad[12] * 0x10000 + headerLec.bCad[11] * 0x100 + headerLec.bCad[10]; // (headerLec.bCad[0] != 'B' || headerLec.bCad[1] != 'M') // "BM" o M * 256 + B if (header.bfTipo != VALOR_MB) // Check for BM reversed ... { log_msj("\n Este fichero [%s] no es de tipo bitmap", sFichero); fclose(fp); _return(NULL); } infosize = header.bfBitsSuma - sizeof(headerLec); info = (miBitmap *) dar_m(infosize, "carga_bmp_SDL 2"); if (info == NULL) { log_msj("\n Memoria para el 'Info' del Bitmap: %s", sFichero); fclose(fp); _return(NULL); } bytleidos = fread(info, 1, infosize, fp); if (bytleidos < infosize) { log_msj("\n Lectura de Info. del Bitmap [%s]", sFichero); info = liberar_m(info); fclose(fp); _return(NULL); } // Now that we have all the header info read in, allocate memory for the // bitmap and read *it* in... *TamX = info->bmiHeader.biAncho; *TamY = info->bmiHeader.biAlto; bitsize = info->bmiHeader.biSizeImagen; if (bitsize == 0) bitsize = (*TamX * info->bmiHeader.biCuentaBits + 7) / 8 * abs(*TamY); info = liberar_m(info); bits = dar_m(bitsize, "carga_bmp_SDL 3"); if (bits == NULL) { log_msj("\n Memoria para la imagen del Bitmap: %s", sFichero); fclose(fp); _return NULL; } bytleidos = fread(bits, 1, bitsize, fp); if (bytleidos < bitsize) { log_msj("\n Lectura de la imagen del Bitmap [%s]", sFichero); bits = liberar_m(bits); // bits = NULL, con lo que se devuelve NULL } fclose(fp); _return bits; }
int encode_op(char *opcode, char *op_data) { int rd,rs,rt,imm,funct,shaft,target; char tmp[256]; const char *fi = "%s %d"; const char *fg = "%s %%g%d"; const char *ff = "%s %%f%d"; const char *fl = "%s %s"; const char *fgi = "%s %%g%d, %d"; const char *fgl = "%s %%g%d, %s"; const char *fgg = "%s %%g%d, %%g%d"; const char *fggl = "%s %%g%d, %%g%d, %s"; const char *fggi = "%s %%g%d, %%g%d, %d"; const char *fggg = "%s %%g%d, %%g%d, %%g%d"; const char *fff = "%s %%f%d, %%f%d"; const char *fgf = "%s %%g%d, %%f%d"; const char *ffg = "%s %%f%d, %%g%d"; const char *fffl = "%s %%f%d, %%f%d, %s"; const char *ffff = "%s %%f%d, %%f%d, %%f%d"; const char *ffgi = "%s %%f%d, %%g%d, %d"; const char *ffgg = "%s %%f%d, %%g%d, %%g%d"; char lname[256]; shaft = funct = target = 0; if(strcmp(opcode, "mvhi") == 0){ if(sscanf(op_data, fgi, tmp, &rs, &imm) == 3) return mvhi(rs,0,imm); } if(strcmp(opcode, "mvlo") == 0){ if(sscanf(op_data, fgi, tmp, &rs, &imm) == 3) return mvlo(rs,0,imm); } if(strcmp(opcode, "add") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return add(rs,rt,rd,0); } if(strcmp(opcode, "nor") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return nor(rs,rt,rd,0); } if(strcmp(opcode, "sub") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return sub(rs,rt,rd,0); } if(strcmp(opcode, "mul") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return mul(rs,rt,rd,0); } if(strcmp(opcode, "addi") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return addi(rs,rt,imm); } if(strcmp(opcode, "subi") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return subi(rs,rt,imm); } if(strcmp(opcode, "muli") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return muli(rs,rt,imm); } if(strcmp(opcode, "input") == 0){ if(sscanf(op_data, fg, tmp, &rd) == 2) return input(0,0,rd,0); } if(strcmp(opcode, "inputw") == 0){ if(sscanf(op_data, fg, tmp, &rd) == 2) return inputw(0,0,rd,0); } if(strcmp(opcode, "inputf") == 0){ if(sscanf(op_data, ff, tmp, &rd) == 2) return inputf(0,0,rd,0); } if(strcmp(opcode, "output") == 0){ if(sscanf(op_data, fg, tmp, &rs) == 2) return output(rs,0,0,0); } if(strcmp(opcode, "outputw") == 0){ if(sscanf(op_data, fg, tmp, &rs) == 2) return outputw(rs,0,0,0); } if(strcmp(opcode, "outputf") == 0){ if(sscanf(op_data, ff, tmp, &rs) == 2) return outputf(rs,0,0,0); } if(strcmp(opcode, "and") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return _and(rs,rt,rd,0); } if(strcmp(opcode, "or") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return _or(rs,rt,rd,0); } if(strcmp(opcode, "sll") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return sll(rs,rt,rd,0); } if(strcmp(opcode, "srl") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return srl(rs,rt,rd,0); } if(strcmp(opcode, "slli") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return slli(rs,rt,imm); } if(strcmp(opcode, "srli") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return srli(rs,rt,imm); } if(strcmp(opcode, "b") == 0){ if(sscanf(op_data, fg, tmp, &rs) == 2) return b(rs,0,0,0); } if(strcmp(opcode, "jmp") == 0){ if(sscanf(op_data, fl, tmp, lname) == 2) { strcpy(label_name[label_cnt],lname); return jmp(label_cnt++); } } if(strcmp(opcode, "jeq") == 0){ if(sscanf(op_data, fggl, tmp, &rs, &rt, lname) == 4) { strcpy(label_name[label_cnt],lname); return jeq(rs,rt,label_cnt++); } } if(strcmp(opcode, "jne") == 0){ if(sscanf(op_data, fggl, tmp, &rs, &rt, lname) == 4) { strcpy(label_name[label_cnt],lname); return jne(rs,rt,label_cnt++); } } if(strcmp(opcode, "jlt") == 0){ if(sscanf(op_data, fggl, tmp, &rs, &rt, lname) == 4) { strcpy(label_name[label_cnt],lname); return jlt(rs,rt,label_cnt++); } } if(strcmp(opcode, "jle") == 0){ if(sscanf(op_data, fggl, tmp, &rs, &rt, lname) == 4) { strcpy(label_name[label_cnt],lname); return jle(rs,rt,label_cnt++); } } if(strcmp(opcode, "call") == 0){ if(sscanf(op_data, fl, tmp, lname) == 2) { strcpy(label_name[label_cnt],lname); return call(label_cnt++); } } if(strcmp(opcode, "callR") == 0){ if(sscanf(op_data, fg, tmp, &rs) == 2) return callr(rs,0,0,0); } if(strcmp(opcode, "return") == 0){ return _return(0); } if(strcmp(opcode, "ld") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return ld(rs,rt,rd,0); } if(strcmp(opcode, "ldi") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return ldi(rs,rt,imm); } if(strcmp(opcode, "ldlr") == 0){ if(sscanf(op_data, fgi, tmp, &rs, &imm) == 3) return ldlr(rs,0,imm); } if(strcmp(opcode, "fld") == 0){ if(sscanf(op_data, ffgg, tmp, &rd, &rs,&rt) == 4) return fld(rs,rt,rd,0); } if(strcmp(opcode, "st") == 0){ if(sscanf(op_data, fggg, tmp, &rd, &rs,&rt) == 4) return st(rs,rt,rd,0); } if(strcmp(opcode, "sti") == 0){ if(sscanf(op_data, fggi, tmp, &rt, &rs, &imm) == 4) return sti(rs,rt,imm); } if(strcmp(opcode, "stlr") == 0){ if(sscanf(op_data, fgi, tmp, &rs, &imm) == 3) return stlr(rs,0,imm); } if(strcmp(opcode, "fst") == 0){ if(sscanf(op_data, ffgg, tmp, &rd, &rs,&rt) == 4) return fst(rs,rt,rd,0); } if(strcmp(opcode, "fadd") == 0){ if(sscanf(op_data, ffff, tmp, &rd, &rs, &rt) == 4) return fadd(rs,rt,rd,0); } if(strcmp(opcode, "fsub") == 0){ if(sscanf(op_data, ffff, tmp, &rd, &rs, &rt) == 4) return fsub(rs,rt,rd,0); } if(strcmp(opcode, "fmul") == 0){ if(sscanf(op_data, ffff, tmp, &rd, &rs, &rt) == 4) return fmul(rs,rt,rd,0); } if(strcmp(opcode, "fdiv") == 0){ if(sscanf(op_data, ffff, tmp, &rd, &rs, &rt) == 4) return fdiv(rs,rt,rd,0); } if(strcmp(opcode, "fsqrt") == 0){ if(sscanf(op_data, fff, tmp, &rd, &rs) == 3) return fsqrt(rs,0,rd,0); } if(strcmp(opcode, "fabs") == 0){ if(sscanf(op_data, fff, tmp, &rd, &rs) == 3) return _fabs(rs,0,rd,0); } if(strcmp(opcode, "fmov") == 0){ if(sscanf(op_data, fff, tmp, &rd, &rs) == 3) return fmov(rs,0,rd,0); } if(strcmp(opcode, "fneg") == 0){ if(sscanf(op_data, fff, tmp, &rd, &rs) == 3) return fneg(rs,0,rd,0); } if(strcmp(opcode, "fldi") == 0){ if(sscanf(op_data, ffgi, tmp, &rt, &rs, &imm) == 4) return fldi(rs,rt,imm); } if(strcmp(opcode, "fsti") == 0){ if(sscanf(op_data, ffgi, tmp, &rt, &rs, &imm) == 4) return fsti(rs,rt,imm); } if(strcmp(opcode, "fjeq") == 0){ if(sscanf(op_data, fffl, tmp, &rs, &rt, lname) == 4) { strcpy(label_name[label_cnt],lname); return fjeq(rs,rt,label_cnt++); } } if(strcmp(opcode, "fjlt") == 0){ if(sscanf(op_data, fffl, tmp, &rs, &rt, lname) == 4) { strcpy(label_name[label_cnt],lname); return fjlt(rs,rt,label_cnt++); } } if(strcmp(opcode, "halt") == 0){ return halt(0,0,0,0); } if(strcmp(opcode, "setL") == 0){ if(sscanf(op_data, fgl, tmp, &rd, lname) == 3) { strcpy(label_name[label_cnt],lname); return setl(0,rd,label_cnt++); } } if(strcmp(opcode, "padd") == 0){ if(sscanf(op_data, fgi, tmp, &rt, &imm) == 3) { return padd(0,rt,imm); } } if(strcmp(opcode, "link") == 0){ if(sscanf(op_data, fi, tmp, &imm) == 2) { return link(0,0,imm); } } if(strcmp(opcode, "movlr") == 0){ return movlr(0,0,0,0); } if(strcmp(opcode, "btmplr") == 0){ return btmplr(0,0,0,0); } /* if(strcmp(opcode, "padd") == 0){ if(sscanf(op_data, fgg, tmp, &rd, &rt) == 3) { return padd(0,rt,d,0); } } */ return -1; }