60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
|
// This file is part of AsmJit project <https://asmjit.com>
|
||
|
//
|
||
|
// See asmjit.h or LICENSE.md for license and copyright information
|
||
|
// SPDX-License-Identifier: Zlib
|
||
|
|
||
|
#ifndef ASMJIT_CORE_TARGET_H_INCLUDED
|
||
|
#define ASMJIT_CORE_TARGET_H_INCLUDED
|
||
|
|
||
|
#include "../core/archtraits.h"
|
||
|
#include "../core/cpuinfo.h"
|
||
|
#include "../core/func.h"
|
||
|
|
||
|
ASMJIT_BEGIN_NAMESPACE
|
||
|
|
||
|
//! \addtogroup asmjit_core
|
||
|
//! \{
|
||
|
|
||
|
//! 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;
|
||
|
//! Target CPU features.
|
||
|
CpuFeatures _cpuFeatures;
|
||
|
|
||
|
//! \name Construction & Destruction
|
||
|
//! \{
|
||
|
|
||
|
//! Creates a `Target` instance.
|
||
|
ASMJIT_API Target() noexcept;
|
||
|
//! Destroys the `Target` instance.
|
||
|
ASMJIT_API virtual ~Target() noexcept;
|
||
|
|
||
|
//! \}
|
||
|
|
||
|
//! \name Accessors
|
||
|
//! \{
|
||
|
|
||
|
//! Returns target's environment.
|
||
|
inline const Environment& environment() const noexcept { return _environment; }
|
||
|
//! Returns the target architecture.
|
||
|
inline Arch arch() const noexcept { return _environment.arch(); }
|
||
|
//! Returns the target sub-architecture.
|
||
|
inline SubArch subArch() const noexcept { return _environment.subArch(); }
|
||
|
|
||
|
//! Returns target CPU features.
|
||
|
inline const CpuFeatures& cpuFeatures() const noexcept { return _cpuFeatures; }
|
||
|
|
||
|
//! \}
|
||
|
};
|
||
|
|
||
|
//! \}
|
||
|
|
||
|
ASMJIT_END_NAMESPACE
|
||
|
|
||
|
#endif // ASMJIT_CORE_TARGET_H_INCLUDED
|