[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 05/27] util/hexdump: Inline g_string_append_printf "%02x"
|
From: |
Richard Henderson |
|
Subject: |
[PATCH v3 05/27] util/hexdump: Inline g_string_append_printf "%02x" |
|
Date: |
Fri, 12 Apr 2024 00:33:24 -0700 |
Trivial arithmetic can be used for emitting the nibbles,
rather than full-blown printf formatting.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
util/hexdump.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/util/hexdump.c b/util/hexdump.c
index b29326b7f2..ae0d4992dc 100644
--- a/util/hexdump.c
+++ b/util/hexdump.c
@@ -16,6 +16,11 @@
#include "qemu/osdep.h"
#include "qemu/cutils.h"
+static inline char hexdump_nibble(unsigned x)
+{
+ return (x < 10 ? '0' : 'a' - 10) + x;
+}
+
GString *qemu_hexdump_line(GString *str, const void *vbuf, size_t len,
size_t unit_len, size_t block_len)
{
@@ -35,6 +40,8 @@ GString *qemu_hexdump_line(GString *str, const void *vbuf,
size_t len,
}
for (u = 0, b = 0; len; u++, b++, len--, buf++) {
+ uint8_t c;
+
if (unit_len && u == unit_len) {
g_string_append_c(str, ' ');
u = 0;
@@ -43,7 +50,10 @@ GString *qemu_hexdump_line(GString *str, const void *vbuf,
size_t len,
g_string_append_c(str, ' ');
b = 0;
}
- g_string_append_printf(str, "%02x", *buf);
+
+ c = *buf;
+ g_string_append_c(str, hexdump_nibble(c / 16));
+ g_string_append_c(str, hexdump_nibble(c % 16));
}
return str;
--
2.34.1
- [PATCH v3 10/27] hw/dma/pl330: Use qemu_hexdump_line to avoid sprintf, (continued)
- [PATCH v3 10/27] hw/dma/pl330: Use qemu_hexdump_line to avoid sprintf, Richard Henderson, 2024/04/12
- [PATCH v3 08/27] hw/scsi/scsi-disk: Use qemu_hexdump_line to avoid sprintf, Richard Henderson, 2024/04/12
- [PATCH v3 12/27] disas/m68k: Replace sprintf() by snprintf(), Richard Henderson, 2024/04/12
- [PATCH v3 13/27] disas/microblaze: Replace sprintf() by snprintf(), Richard Henderson, 2024/04/12
- [PATCH v3 15/27] target/microblaze: Re-indent print_insn_microblaze, Richard Henderson, 2024/04/12
- [PATCH v3 14/27] disas/microblaze: Split out print_immval_addr, Richard Henderson, 2024/04/12
- [PATCH v3 16/27] disas/microblaze: Merge op->name output into each fprintf, Richard Henderson, 2024/04/12
- [PATCH v3 11/27] backends/tpm: Use qemu_hexdump_line to avoid sprintf, Richard Henderson, 2024/04/12
- [PATCH v3 05/27] util/hexdump: Inline g_string_append_printf "%02x",
Richard Henderson <=
- [PATCH v3 17/27] disas/microblaze: Print registers directly with PRIreg, Richard Henderson, 2024/04/12
- [PATCH v3 23/27] hw/misc/imx: Replace sprintf() by snprintf(), Richard Henderson, 2024/04/12
- [PATCH v3 18/27] disas/microblaze: Print immediates directly with PRIimm, Richard Henderson, 2024/04/12
- [PATCH v3 26/27] target/arm: Replace sprintf() by snprintf(), Richard Henderson, 2024/04/12
- [PATCH v3 22/27] linux-user/flatload: Replace sprintf() by snprintf(), Richard Henderson, 2024/04/12
- [PATCH v3 21/27] disas/riscv: Use GString in format_inst, Richard Henderson, 2024/04/12
- [PATCH v3 25/27] hw/riscv/virt: Replace sprintf by g_strdup_printf, Richard Henderson, 2024/04/12
- [PATCH v3 19/27] disas/microblaze: Print registers directly with PRIrfsl, Richard Henderson, 2024/04/12