/* * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2019 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
// AbstractDisassembler is the base class for // platform-specific Disassembler classes.
#include"utilities/globalDefinitions.hpp"
class AbstractDisassembler {
private: // These are some general settings which control // abstract disassembly output. enum { // that many bytes are dumped in one line.
abstract_instruction_bytes_per_line = 32, // instruction bytes are grouped in blocks of that many bytes.
abstract_instruction_bytes_per_block = 2, // instructions have this default len.
abstract_instruction_size_in_bytes = 1, // instructions have this maximum len.
abstract_instruction_maxsize_in_bytes = 1
};
// Decodes the one instruction at address start in a platform-independent // format. Returns the start of the next instruction (which is // 'start' plus 'instruction_size_in_bytes'). The parameter max_instr_size_in_bytes // is used for output alignment purposes only. static address decode_instruction_abstract(address start,
outputStream* st, constint instruction_size_in_bytes, constint max_instr_size_in_bytes = abstract_instruction_maxsize_in_bytes);
// Decodes all instructions in the given range [start..end) // calling decode_instruction_abstract for each instruction. // The format is platform dependent only to the extend that // it respects the actual instruction length where possible. // Does not print any markers or decorators. staticvoid decode_range_abstract(address range_start, address range_end,
address start, address end,
outputStream* st, constint max_instr_size_in_bytes = abstract_instruction_maxsize_in_bytes);
// Decodes all instructions in the given range in a platform-independent // format, calling decode_instruction_abstract for each instruction. staticvoid decode_abstract(address start, address end,
outputStream* st, constint max_instr_size_in_bytes = abstract_instruction_maxsize_in_bytes);
};
#endif// SHARE_COMPILER_ABSTRACTDISASSEMBLER_HPP
¤ Dauer der Verarbeitung: 0.21 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.