lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib/jit_disasm.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/jit_disasm.c')
-rw-r--r--lib/jit_disasm.c 32
1 files changed, 17 insertions, 15 deletions
diff --git a/lib/jit_disasm.c b/lib/jit_disasm.c
index 625419b..c0a5079 100644
--- a/lib/jit_disasm.c
+++ b/lib/jit_disasm.c
@@ -29,8 +29,9 @@ disasm_compare_symbols(const void *ap, const void *bp);
static void
disasm_print_address(bfd_vma addr, struct disassemble_info *info);
+#define disassemble(u, v) _disassemble(_jit, u, v)
static void
-disassemble(jit_pointer_t code, jit_int32_t length);
+_disassemble(jit_state_t *_jit, jit_pointer_t code, jit_int32_t length);
#endif
/*
@@ -238,19 +239,20 @@ disasm_print_address(bfd_vma addr, struct disassemble_info *info)
}
static void
-disassemble(jit_pointer_t code, jit_int32_t length)
+_disassemble(jit_state_t *_jit, jit_pointer_t code, jit_int32_t length)
{
- int bytes;
+ int bytes;
#if __arm__
- jit_data_info_t *data_info;
- jit_int32_t data_offset;
+ jit_int32_t offset;
+ jit_bool_t data_info;
+ jit_int32_t data_offset;
#endif
- bfd_vma pc = (jit_uword_t)code;
- bfd_vma end = (jit_uword_t)code + length;
- char buffer[address_buffer_length];
+ bfd_vma pc = (jit_uword_t)code;
+ bfd_vma end = (jit_uword_t)code + length;
+ char buffer[address_buffer_length];
#if __arm__
- data_info = _jit->data_info;
+ data_info = 1;
data_offset = 0;
#endif
disasm_info.buffer = code;
@@ -260,16 +262,16 @@ disassemble(jit_pointer_t code, jit_int32_t length)
#if __arm__
again:
if (data_info) {
- while (data_info.ptr[data_offset].code < pc) {
+ while (_jit->data_info.ptr[data_offset].code < pc) {
data_offset += 2;
- if (data_offset >= data_info.length) {
- data_info = NULL;
+ if (data_offset >= _jit->data_info.length) {
+ data_info = 0;
goto again;
}
}
- if (pc == data_info.ptr[data_offset].code) {
- line = data_info.ptr[data_offset].length;
- for (; line >= 4; line -= 4, pc += 4) {
+ if (pc == _jit->data_info.ptr[data_offset].code) {
+ offset = _jit->data_info.ptr[data_offset].length;
+ for (; offset >= 4; offset -= 4, pc += 4) {
bytes = sprintf(buffer, address_buffer_format, pc);
(*disasm_info.fprintf_func)(disasm_stream,
"%*c0x%s\t.data\t0x%08x\n",
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月13日 02:01:37 +0000

AltStyle によって変換されたページ (->オリジナル) /