Remove inefficient rz_mem_swapendian() (#3411)
This commit is contained in:
parent
fdc2f1e3bd
commit
f8d02292f9
6 changed files with 9 additions and 59 deletions
|
|
@ -6187,12 +6187,11 @@ static int arm_assemble(ArmOpcode *ao, ut64 off, const char *str) {
|
|||
RZ_LOG_ERROR("assembler: arm: %s: lsb + width out of bounds\n", ops[i].name);
|
||||
return 0;
|
||||
}
|
||||
ut32 tmp;
|
||||
rz_mem_swapendian((ut8 *)(void *)&tmp, (const ut8 *)(void *)&ao->o, sizeof(tmp));
|
||||
ut32 tmp = rz_swap_ut32(ao->o);
|
||||
tmp |= lsb << 7;
|
||||
tmp |= msb << 16;
|
||||
tmp |= reg << 12;
|
||||
rz_mem_swapendian((ut8 *)(void *)&ao->o, (const ut8 *)(void *)&tmp, sizeof(tmp));
|
||||
ao->o = rz_swap_ut32(tmp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,8 @@ static int disassemble(RzAsm *a, RzAsmOp *op, const ut8 *buf, int len) {
|
|||
buf_global = &op->buf_asm;
|
||||
Offset = a->pc;
|
||||
// disasm inverted
|
||||
rz_mem_swapendian(bytes, buf, 4); // TODO handle thumb
|
||||
ut32 newbuf = rz_swap_ut32(*(ut32 *)buf);
|
||||
memcpy(bytes, &newbuf, 4); // TODO handle thumb
|
||||
|
||||
rz_strbuf_set(&op->buf_asm, "");
|
||||
/* prepare disassembler */
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ RZ_API void rz_mem_copybits(ut8 *dst, const ut8 *src, int bits);
|
|||
RZ_API void rz_mem_copybits_delta(ut8 *dst, int doff, const ut8 *src, int soff, int bits);
|
||||
RZ_API void rz_mem_copyloop(ut8 *dest, const ut8 *orig, int dsize, int osize);
|
||||
RZ_API void *rz_mem_copy(void *dest, size_t dmax, const void *src, size_t smax);
|
||||
RZ_API void rz_mem_swapendian(ut8 *dest, const ut8 *orig, int size);
|
||||
RZ_API int rz_mem_cmp_mask(const ut8 *dest, const ut8 *orig, const ut8 *mask, int len);
|
||||
RZ_API const ut8 *rz_mem_mem(const ut8 *haystack, int hlen, const ut8 *needle, int nlen);
|
||||
RZ_API const ut8 *rz_mem_mem_aligned(const ut8 *haystack, int hlen, const ut8 *needle, int nlen, int align);
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ static int format_output(RzNum *num, char mode, const char *s, int force_mode, u
|
|||
}
|
||||
if (has_flag(flags, RZ_AX_FLAG_SWAP_ENDIANNESS)) {
|
||||
ut64 n2 = n;
|
||||
rz_mem_swapendian((ut8 *)&n, (ut8 *)&n2, 8);
|
||||
n = rz_swap_ut64(n2);
|
||||
if (!(int)n) {
|
||||
n >>= 32;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -510,15 +510,11 @@ static bool filter(RzParse *p, ut64 addr, RzFlag *f, RzAnalysisHint *hint, char
|
|||
swap = off & 0xffff;
|
||||
} else {
|
||||
if (off >> 32) {
|
||||
rz_mem_swapendian((ut8 *)&swap, (const ut8 *)&off, sizeof(off));
|
||||
swap = rz_swap_ut64(off);
|
||||
} else if (off >> 16) {
|
||||
ut32 port = 0;
|
||||
rz_mem_swapendian((ut8 *)&port, (const ut8 *)&off, sizeof(port));
|
||||
swap = port;
|
||||
swap = rz_swap_ut32(off);
|
||||
} else {
|
||||
ut16 port = 0;
|
||||
rz_mem_swapendian((ut8 *)&port, (const ut8 *)&off, sizeof(port));
|
||||
swap = port;
|
||||
swap = rz_swap_ut16(off);
|
||||
}
|
||||
}
|
||||
snprintf(num, sizeof(num), "htons (%d)", (int)(swap & 0xFFFF));
|
||||
|
|
|
|||
|
|
@ -186,52 +186,7 @@ RZ_API int rz_mem_set_num(ut8 *dest, int dest_size, ut64 num) {
|
|||
return true;
|
||||
}
|
||||
|
||||
// This function unconditionally swaps endian of size bytes of orig -> dest
|
||||
// TODO: Remove completely
|
||||
RZ_API void rz_mem_swapendian(ut8 *dest, const ut8 *orig, int size) {
|
||||
ut8 buffer[8];
|
||||
switch (size) {
|
||||
case 1:
|
||||
*dest = *orig;
|
||||
break;
|
||||
case 2:
|
||||
*buffer = *orig;
|
||||
dest[0] = orig[1];
|
||||
dest[1] = buffer[0];
|
||||
break;
|
||||
case 3:
|
||||
*buffer = *orig;
|
||||
dest[0] = orig[2];
|
||||
dest[1] = orig[1];
|
||||
dest[2] = buffer[0];
|
||||
break;
|
||||
case 4:
|
||||
memcpy(buffer, orig, 4);
|
||||
dest[0] = buffer[3];
|
||||
dest[1] = buffer[2];
|
||||
dest[2] = buffer[1];
|
||||
dest[3] = buffer[0];
|
||||
break;
|
||||
case 8:
|
||||
memcpy(buffer, orig, 8);
|
||||
dest[0] = buffer[7];
|
||||
dest[1] = buffer[6];
|
||||
dest[2] = buffer[5];
|
||||
dest[3] = buffer[4];
|
||||
dest[4] = buffer[3];
|
||||
dest[5] = buffer[2];
|
||||
dest[6] = buffer[1];
|
||||
dest[7] = buffer[0];
|
||||
break;
|
||||
default:
|
||||
if (dest != orig) {
|
||||
memmove(dest, orig, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RZ_DOC rz_mem_mem: Finds the needle of nlen size into the haystack of hlen size
|
||||
// RZ_UNIT printf("%s\n", rz_mem_mem("food is pure lame", 20, "is", 2));
|
||||
/* \brief Finds the \p needle of \p nlen size into the \p haystack of \p hlen size */
|
||||
RZ_API const ut8 *rz_mem_mem(const ut8 *haystack, int hlen, const ut8 *needle, int nlen) {
|
||||
int i, until = hlen - nlen + 1;
|
||||
if (hlen < 1 || nlen < 1) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue