author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2012年12月03日 14:27:27 -0200 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2012年12月03日 14:27:27 -0200 |
commit | 1c9088beca341765f5260a1ae6f3289b494d4eb8 (patch) | |
tree | 9a7232353a37214d7c29adae53f23fef9b9e742a /lib/jit_disasm.c | |
parent | 712877a5a4c967e0db6a6ce4e92162c9a9056192 (diff) | |
download | lightning-1c9088beca341765f5260a1ae6f3289b494d4eb8.tar.gz |
-rw-r--r-- | lib/jit_disasm.c | 32 |
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", |