MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / disasmGet

Function disasmGet

gui/qt/debugger/disasm.cpp:173–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

171}
172
173void disasmGet(bool useCpuMode) {
174 disasm.ctx.zdis_lowercase = !disasm.uppercase;
175 disasm.ctx.zdis_implicit = !disasm.implicit;
176 disasm.ctx.zdis_end_addr = static_cast<uint32_t>(disasm.base);
177 disasm.ctx.zdis_adl = useCpuMode ? cpu.ADL : disasm.adl;
178 disasm.cur = &disasm.instr.opcode;
179
180 disasm.highlight.watchR = false;
181 disasm.highlight.watchW = false;
182 disasm.highlight.breakP = false;
183 disasm.highlight.pc = false;
184 disasm.highlight.addr = -1;
185
186 disasm.instr.data.clear();
187 disasm.instr.opcode.clear();
188 disasm.instr.operands.clear();
189
190 zdis_put_inst(&disasm.ctx);
191
192 if (disasm.highlight.pc && cpu.registers.PC != static_cast<uint32_t>(disasm.base)) {
193 static char tmpbuf[20];
194 size_t size = cpu.registers.PC - static_cast<uint32_t>(disasm.base);
195 disasm.instr.data = disasm.instr.data.substr(0, size * 2);
196 disasm.instr.operands = disasm.tab ? '\t' : ' ';
197 int precision;
198 if (size % 3 == 0) {
199 size /= 3;
200 precision = 6;
201 disasm.instr.opcode = "dl";
202 } else if (size % 2 == 0) {
203 size /= 2;
204 precision = 4;
205 disasm.instr.opcode = "dw";
206 } else {
207 precision = 2;
208 disasm.instr.opcode = "db";
209 }
210 do {
211 snprintf(tmpbuf, sizeof(tmpbuf) - 1, "$%0*X", precision, mem_peek_long(static_cast<uint32_t>(disasm.base)) & ((1 << 4*precision) - 1));
212 disasm.instr.operands += tmpbuf;
213 if (--size) {
214 disasm.instr.operands += ',';
215 }
216 } while (size);
217 disasm.base = static_cast<int32_t>(disasm.ctx.zdis_start_addr);
218 disasm.next = static_cast<int32_t>(cpu.registers.PC);
219 disasm.highlight.pc = false;
220 } else {
221 disasm.base = static_cast<int32_t>(disasm.ctx.zdis_start_addr);
222 disasm.next = static_cast<int32_t>(disasm.ctx.zdis_end_addr);
223 }
224
225 disasm.instr.size = static_cast<unsigned int>(disasm.next) - static_cast<unsigned int>(disasm.base);
226}
227
228#include <iostream>
229void debugInstruction(void) {

Callers 5

disasmLineMethod · 0.85
debugStepMethod · 0.85
breakAddGuiMethod · 0.85
watchAddGuiMethod · 0.85
debugInstructionFunction · 0.85

Calls 2

mem_peek_longFunction · 0.85
clearMethod · 0.45

Tested by

no test coverage detected