diff --git a/CMakeLists.txt b/CMakeLists.txt index ee3f80eb..2fd8a8b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,6 +118,7 @@ set(SPIRV_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/source/validate.h ${CMAKE_CURRENT_SOURCE_DIR}/source/assembly_grammar.cpp ${CMAKE_CURRENT_SOURCE_DIR}/source/binary.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/source/disassemble.cpp ${CMAKE_CURRENT_SOURCE_DIR}/source/diagnostic.cpp ${CMAKE_CURRENT_SOURCE_DIR}/source/endian.cpp ${CMAKE_CURRENT_SOURCE_DIR}/source/ext_inst.cpp diff --git a/source/binary.cpp b/source/binary.cpp index 21605964..330e692c 100644 --- a/source/binary.cpp +++ b/source/binary.cpp @@ -501,17 +501,6 @@ spv_result_t spvBinaryDecodeOpcode( return SPV_SUCCESS; } -spv_result_t spvBinaryToText(uint32_t* code, const uint64_t wordCount, - const uint32_t options, - const spv_opcode_table opcodeTable, - const spv_operand_table operandTable, - const spv_ext_inst_table extInstTable, - spv_text* pText, spv_diagnostic* pDiagnostic) { - return spvBinaryToTextWithFormat( - code, wordCount, options, opcodeTable, operandTable, extInstTable, - SPV_ASSEMBLY_SYNTAX_FORMAT_DEFAULT, pText, pDiagnostic); -} - spv_result_t spvBinaryToTextWithFormat( uint32_t* code, const uint64_t wordCount, const uint32_t options, const spv_opcode_table opcodeTable, const spv_operand_table operandTable, diff --git a/source/disassemble.cpp b/source/disassemble.cpp new file mode 100644 index 00000000..90a6181a --- /dev/null +++ b/source/disassemble.cpp @@ -0,0 +1,44 @@ +// Copyright (c) 2015 The Khronos Group Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and/or associated documentation files (the +// "Materials"), to deal in the Materials without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Materials, and to +// permit persons to whom the Materials are furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Materials. +// +// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS +// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS +// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT +// https://www.khronos.org/registry/ +// +// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + +// This file contains a disassembler: It converts a SPIR-V binary +// to text. +// TODO(dneto): Right now it's just a stub, but should evolve to using +// the binary decoder in binary.cpp to semantically decompose the binary +// for us. All this module has to do is convert the result to text. + +#include "libspirv/libspirv.h" + +spv_result_t spvBinaryToText(uint32_t* code, const uint64_t wordCount, + const uint32_t options, + const spv_opcode_table opcodeTable, + const spv_operand_table operandTable, + const spv_ext_inst_table extInstTable, + spv_text* pText, spv_diagnostic* pDiagnostic) { + return spvBinaryToTextWithFormat( + code, wordCount, options, opcodeTable, operandTable, extInstTable, + SPV_ASSEMBLY_SYNTAX_FORMAT_DEFAULT, pText, pDiagnostic); +}