#include <disassembler.h>
Definition at line 91 of file disassembler.h.
◆ DisassembleToMemory()
dart::DisassembleToMemory::DisassembleToMemory |
( |
char * |
buffer, |
|
|
uintptr_t |
length |
|
) |
| |
|
inline |
Definition at line 93 of file disassembler.h.
97 overflowed_(false) {}
static const uint8_t buffer[]
◆ ~DisassembleToMemory()
dart::DisassembleToMemory::~DisassembleToMemory |
( |
| ) |
|
|
inline |
◆ ConsumeInstruction()
void dart::DisassembleToMemory::ConsumeInstruction |
( |
char * |
hex_buffer, |
|
|
intptr_t |
hex_size, |
|
|
char * |
human_buffer, |
|
|
intptr_t |
human_size, |
|
|
Object * |
object, |
|
|
uword |
pc |
|
) |
| |
|
virtual |
Implements dart::DisassemblyFormatter.
Definition at line 65 of file disassembler.cc.
70 {
71 if (overflowed_) {
72 return;
73 }
75
76
77
78#if defined(TARGET_ARCH_RISCV32) || defined(TARGET_ARCH_RISCV64) || \
79 defined(TARGET_ARCH_ARM)
80 len = strlen(hex_buffer);
81 if (remaining_ < len + 100) {
82 *buffer_++ = '.';
83 *buffer_++ = '.';
84 *buffer_++ = '.';
85 *buffer_++ = '\n';
86 *buffer_++ = '\0';
87 overflowed_ = true;
88 return;
89 }
90 memmove(buffer_, hex_buffer, len);
93 *buffer_++ = ' ';
94 remaining_--;
95 *buffer_ = '\0';
96#endif
97
98 len = strlen(human_buffer);
99 if (remaining_ < len + 100) {
100 *buffer_++ = '.';
101 *buffer_++ = '.';
102 *buffer_++ = '.';
103 *buffer_++ = '\n';
104 *buffer_++ = '\0';
105 overflowed_ = true;
106 return;
107 }
108 memmove(buffer_, human_buffer, len);
111 *buffer_++ = '\n';
112 remaining_--;
113 *buffer_ = '\0';
114}
◆ Print()
void dart::DisassembleToMemory::Print |
( |
const char * |
format, |
|
|
|
... |
|
) |
| |
|
virtual |
Reimplemented from dart::DisassemblyFormatter.
Definition at line 116 of file disassembler.cc.
116 {
117 if (overflowed_) {
118 return;
119 }
120 va_list measure_args;
124 if (remaining_ < len + 100) {
125 *buffer_++ = '.';
126 *buffer_++ = '.';
127 *buffer_++ = '.';
128 *buffer_++ = '\n';
129 *buffer_++ = '\0';
130 overflowed_ = true;
131 return;
132 }
133 va_list print_args;
140 *buffer_++ = '\n';
141 remaining_--;
142 *buffer_ = '\0';
143}
static int static int VSNPrint(char *str, size_t size, const char *format, va_list args)
uint32_t uint32_t * format
The documentation for this class was generated from the following files: