Lines Matching full:stream
102 char* EncoderBase::encode_aux(char* stream, unsigned aux,
112 return stream;
127 ModRM& modrm = *(ModRM*)stream;
133 stream = encodeModRM(stream, opnds, memidx, odesc, prex);
143 ++stream;
163 ModRM& modrm = *(ModRM*)stream;
167 stream = encodeModRM(stream, opnds, idx, odesc, prex);
177 ++stream;
192 *stream = (char)lowByte + getHWRegIndex(opnds[idx].reg());
193 ++stream;
213 *(unsigned char*)stream = (unsigned char)opnds[idx].imm();
214 curRelOpnd[idx] = stream;
215 stream += 1;
218 *(unsigned short*)stream = (unsigned short)opnds[idx].imm();
219 curRelOpnd[idx] = stream;
220 stream += 2;
223 *(unsigned*)stream = (unsigned)opnds[idx].imm();
224 curRelOpnd[idx] = stream;
225 stream += 4;
230 *(long long*)stream = (long long)opnds[idx].imm();
231 curRelOpnd[idx] = stream;
232 stream += 8;
243 *(unsigned char*)stream = (unsigned char)opnds[*pargsCount].imm();
244 curRelOpnd[*pargsCount]= stream;
245 stream += 1;
250 *(unsigned short*)stream = (unsigned short)opnds[*pargsCount].imm();
251 curRelOpnd[*pargsCount]= stream;
252 stream += 2;
257 *(unsigned*)stream = (unsigned)opnds[*pargsCount].imm();
258 curRelOpnd[*pargsCount]= stream;
259 stream += 4;
275 *(unsigned char*)stream = (unsigned char)lowByte +
282 ++stream;
290 return stream;
293 char * EncoderBase::encode(char * stream, Mnemonic mn, const Operands& opnds)
307 char* saveStream = stream;
324 Rex *prex = (Rex*)stream;
331 *(unsigned char*)stream = _1st;
332 ++stream;
334 prex = (Rex*)stream;
340 ++stream;
342 memcpy(stream, &odesc->opcode[1], odesc->opcode_len-1);
343 stream += odesc->opcode_len-1;
346 prex = (Rex*)stream;
352 ++stream;
358 *(unsigned char*)stream = *(unsigned char*)&odesc->opcode;
361 *(unsigned short*)stream = *(unsigned short*)&odesc->opcode;
364 *(unsigned short*)stream = *(unsigned short*)&odesc->opcode;
365 *(unsigned char*)(stream+2) = odesc->opcode[2];
368 *(unsigned*)stream = *(unsigned*)&odesc->opcode;
370 stream += odesc->opcode_len;
376 stream = encode_aux(stream, odesc->aux0, opnds, odesc, &argsCount, prex);
378 stream = encode_aux(stream, odesc->aux1, opnds, odesc, &argsCount, prex);
386 assert(len == (unsigned)(stream-saveStream));
456 return stream;
459 char* EncoderBase::encodeModRM(char* stream, const Operands& opnds,
466 ModRM& modrm = *(ModRM*)stream;
467 ++stream;
468 SIB& sib = *(SIB*)stream;
490 ++stream; // bypass SIB
496 *(unsigned*)stream = (unsigned)op.disp();
497 curRelOpnd[idx]= stream;
498 stream += 4;
499 return stream;
517 *(unsigned char*)stream = (unsigned char)op.disp();
518 curRelOpnd[idx]= stream;
519 ++stream;
523 *(unsigned*)stream = (unsigned)op.disp();
524 curRelOpnd[idx]= stream;
525 stream += 4;
531 return stream;
535 ++stream; // bypass SIB in stream
556 *(unsigned*)stream = op.disp();
557 curRelOpnd[idx]= stream;
558 stream += 4;
570 return stream;
578 *(unsigned char*)stream = (unsigned char)op.disp();
579 curRelOpnd[idx]= stream;
580 stream += 1;
584 *(unsigned*)stream = (unsigned)op.disp();
585 curRelOpnd[idx]= stream;
586 stream += 4;
621 return stream;
624 char * EncoderBase::nops(char * stream, unsigned howMany)
645 stream[i] = nopBytes[i];
647 stream += nopSize;
651 char* end = stream + howMany;
655 char * EncoderBase::prefix(char* stream, InstPrefix pref)
659 return stream;
661 *stream = (char)pref;
662 return stream + 1;