diff options
Diffstat (limited to 'client/asmjit/core/target.h')
| -rw-r--r-- | client/asmjit/core/target.h | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/client/asmjit/core/target.h b/client/asmjit/core/target.h deleted file mode 100644 index 4d144c6..0000000 --- a/client/asmjit/core/target.h +++ /dev/null @@ -1,175 +0,0 @@ -// AsmJit - Machine code generation for C++ -// -// * Official AsmJit Home Page: https://asmjit.com -// * Official Github Repository: https://github.com/asmjit/asmjit -// -// Copyright (c) 2008-2020 The AsmJit Authors -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -#ifndef ASMJIT_CORE_TARGET_H_INCLUDED -#define ASMJIT_CORE_TARGET_H_INCLUDED - -#include "../core/arch.h" -#include "../core/func.h" - -ASMJIT_BEGIN_NAMESPACE - -//! \addtogroup asmjit_core -//! \{ - -// ============================================================================ -// [asmjit::CodeInfo] -// ============================================================================ - -#ifndef ASMJIT_NO_DEPRECATED -//! Basic information about a code (or target). It describes its architecture, -//! code generation mode (or optimization level), and base address. -class ASMJIT_DEPRECATED_STRUCT("Use Environment instead of CodeInfo") CodeInfo { -public: - //!< Environment information. - Environment _environment; - //! Base address. - uint64_t _baseAddress; - - //! \name Construction & Destruction - //! \{ - - inline CodeInfo() noexcept - : _environment(), - _baseAddress(Globals::kNoBaseAddress) {} - - inline explicit CodeInfo(uint32_t arch, uint32_t subArch = 0, uint64_t baseAddress = Globals::kNoBaseAddress) noexcept - : _environment(arch, subArch), - _baseAddress(baseAddress) {} - - inline explicit CodeInfo(const Environment& environment, uint64_t baseAddress = Globals::kNoBaseAddress) noexcept - : _environment(environment), - _baseAddress(baseAddress) {} - - - inline CodeInfo(const CodeInfo& other) noexcept { init(other); } - - inline bool isInitialized() const noexcept { - return _environment.arch() != Environment::kArchUnknown; - } - - inline void init(const CodeInfo& other) noexcept { - *this = other; - } - - inline void init(uint32_t arch, uint32_t subArch = 0, uint64_t baseAddress = Globals::kNoBaseAddress) noexcept { - _environment.init(arch, subArch); - _baseAddress = baseAddress; - } - - inline void reset() noexcept { - _environment.reset(); - _baseAddress = Globals::kNoBaseAddress; - } - - //! \} - - //! \name Overloaded Operators - //! \{ - - inline CodeInfo& operator=(const CodeInfo& other) noexcept = default; - - inline bool operator==(const CodeInfo& other) const noexcept { return ::memcmp(this, &other, sizeof(*this)) == 0; } - inline bool operator!=(const CodeInfo& other) const noexcept { return ::memcmp(this, &other, sizeof(*this)) != 0; } - - //! \} - - //! \name Accessors - //! \{ - - //! Returns the target environment information, see \ref Environment. - inline const Environment& environment() const noexcept { return _environment; } - - //! Returns the target architecture, see \ref Environment::Arch. - inline uint32_t arch() const noexcept { return _environment.arch(); } - //! Returns the target sub-architecture, see \ref Environment::SubArch. - inline uint32_t subArch() const noexcept { return _environment.subArch(); } - //! Returns the native size of the target's architecture GP register. - inline uint32_t gpSize() const noexcept { return _environment.registerSize(); } - - //! Tests whether this CodeInfo has a base address set. - inline bool hasBaseAddress() const noexcept { return _baseAddress != Globals::kNoBaseAddress; } - //! Returns the base address or \ref Globals::kNoBaseAddress if it's not set. - inline uint64_t baseAddress() const noexcept { return _baseAddress; } - //! Sets base address to `p`. - inline void setBaseAddress(uint64_t p) noexcept { _baseAddress = p; } - //! Resets base address (implicitly sets it to \ref Globals::kNoBaseAddress). - inline void resetBaseAddress() noexcept { _baseAddress = Globals::kNoBaseAddress; } - - //! \} -}; -#endif // !ASMJIT_NO_DEPRECATED - -// ============================================================================ -// [asmjit::Target] -// ============================================================================ - -//! Target is an abstract class that describes a machine code target. -class ASMJIT_VIRTAPI Target { -public: - ASMJIT_BASE_CLASS(Target) - ASMJIT_NONCOPYABLE(Target) - - //! Target environment information. - Environment _environment; - - //! \name Construction & Destruction - //! \{ - - //! Creates a `Target` instance. - ASMJIT_API Target() noexcept; - //! Destroys the `Target` instance. - ASMJIT_API virtual ~Target() noexcept; - - //! \} - - //! \name Accessors - //! \{ - - //! Returns CodeInfo of this target. - //! - //! CodeInfo can be used to setup a CodeHolder in case you plan to generate a - //! code compatible and executable by this Runtime. - inline const Environment& environment() const noexcept { return _environment; } - - //! Returns the target architecture, see \ref Environment::Arch. - inline uint32_t arch() const noexcept { return _environment.arch(); } - //! Returns the target sub-architecture, see \ref Environment::SubArch. - inline uint32_t subArch() const noexcept { return _environment.subArch(); } - -#ifndef ASMJIT_NO_DEPRECATED - ASMJIT_DEPRECATED("Use environment() instead") - inline CodeInfo codeInfo() const noexcept { return CodeInfo(_environment); } - - ASMJIT_DEPRECATED("Use environment().format() instead") - inline uint32_t targetType() const noexcept { return _environment.format(); } -#endif // !ASMJIT_NO_DEPRECATED - - //! \} -}; - -//! \} - -ASMJIT_END_NAMESPACE - -#endif // ASMJIT_CORE_TARGET_H_INCLUDED |