From 079ef7e98c98661f5ffd49674c06677db96fff86 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Wed, 27 Nov 2024 11:53:39 +0100 Subject: Refactoring code for better documentation. Signed-off-by: Amlal EL Mahrouss --- dev/CodeKit/TerminalEmulator.h | 7 + dev/ToolchainKit/AAL/Asm.h | 217 ---------------------------- dev/ToolchainKit/AAL/AssemblyInterface.h | 225 +++++++++++++++++++++++++++++ dev/ToolchainKit/Parser.h | 2 +- dev/ToolchainKit/src/AssemblyFactory.cc | 2 +- dev/ToolchainKit/src/Detail/AsmUtils.h | 2 +- dev/ToolchainKit/src/Detail/ClUtils.h | 2 +- dev/ToolchainKit/src/DynamicLinker64PEF.cc | 2 +- 8 files changed, 237 insertions(+), 222 deletions(-) create mode 100644 dev/CodeKit/TerminalEmulator.h delete mode 100644 dev/ToolchainKit/AAL/Asm.h create mode 100644 dev/ToolchainKit/AAL/AssemblyInterface.h (limited to 'dev') diff --git a/dev/CodeKit/TerminalEmulator.h b/dev/CodeKit/TerminalEmulator.h new file mode 100644 index 0000000..bf1d4a6 --- /dev/null +++ b/dev/CodeKit/TerminalEmulator.h @@ -0,0 +1,7 @@ +/* ------------------------------------------- + + Copyright (C) 2024, ELMH Group, all rights reserved + +------------------------------------------- */ + +#pragma once diff --git a/dev/ToolchainKit/AAL/Asm.h b/dev/ToolchainKit/AAL/Asm.h deleted file mode 100644 index 88173f4..0000000 --- a/dev/ToolchainKit/AAL/Asm.h +++ /dev/null @@ -1,217 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2024, ELMH Group, all rights reserved - -------------------------------------------- */ - -#pragma once - -#include -#include -#include - -namespace ToolchainKit -{ - // - // @brief Frontend to Assembly mountpoint. - // - class AssemblyInterface - { - public: - explicit AssemblyInterface() = default; - virtual ~AssemblyInterface() = default; - - TOOLCHAINKIT_COPY_DEFAULT(AssemblyInterface); - - //@ brief compile to object file. - // Example C++ -> MASM -> AE object. - virtual Int32 CompileToFormat(std::string& src, Int32 arch) = 0; - }; - - /// @brief Simple assembly factory - class AssemblyFactory final - { - public: - explicit AssemblyFactory() = default; - ~AssemblyFactory() = default; - - TOOLCHAINKIT_COPY_DEFAULT(AssemblyFactory); - - public: - enum - { - kArchAMD64, - kArch32x0, - kArch64x0, - kArchRISCV, - kArchPowerPC, - kArchUnknown, - }; - - Int32 Compile(std::string& sourceFile, const Int32& arch) noexcept; - - void Mount(AssemblyInterface* mountPtr) noexcept; - AssemblyInterface* Unmount() noexcept; - - private: - AssemblyInterface* fMounted{nullptr}; - }; - - union NumberCastBase { - NumberCastBase() = default; - ~NumberCastBase() = default; - }; - - union NumberCast64 final { - NumberCast64() = default; - explicit NumberCast64(UInt64 raw) - : raw(raw) - { - } - ~NumberCast64() - { - raw = 0; - } - - CharType number[8]; - UInt64 raw; - }; - - union NumberCast32 final { - NumberCast32() = default; - explicit NumberCast32(UInt32 raw) - : raw(raw) - { - } - ~NumberCast32() - { - raw = 0; - } - - CharType number[4]; - UInt32 raw; - }; - - union NumberCast16 final { - NumberCast16() = default; - explicit NumberCast16(UInt16 raw) - : raw(raw) - { - } - ~NumberCast16() - { - raw = 0; - } - - CharType number[2]; - UInt16 raw; - }; - - union NumberCast8 final { - NumberCast8() = default; - explicit NumberCast8(UInt8 raw) - : raw(raw) - { - } - ~NumberCast8() - { - raw = 0; - } - - CharType number; - UInt8 raw; - }; - - class EncoderInterface - { - public: - explicit EncoderInterface() = default; - virtual ~EncoderInterface() = default; - - TOOLCHAINKIT_COPY_DEFAULT(EncoderInterface); - - virtual std::string CheckLine(std::string& line, const std::string& file) = 0; - virtual bool WriteLine(std::string& line, const std::string& file) = 0; - virtual bool WriteNumber(const std::size_t& pos, std::string& from_what) = 0; - }; - -#ifdef __ASM_NEED_AMD64__ - - class EncoderAMD64 final : public EncoderInterface - { - public: - explicit EncoderAMD64() = default; - ~EncoderAMD64() override = default; - - TOOLCHAINKIT_COPY_DEFAULT(EncoderAMD64); - - virtual std::string CheckLine(std::string& line, - const std::string& file) override; - virtual bool WriteLine(std::string& line, const std::string& file) override; - virtual bool WriteNumber(const std::size_t& pos, - std::string& from_what) override; - - virtual bool WriteNumber16(const std::size_t& pos, std::string& from_what); - virtual bool WriteNumber32(const std::size_t& pos, std::string& from_what); - virtual bool WriteNumber8(const std::size_t& pos, std::string& from_what); - }; - -#endif // __ASM_NEED_AMD64__ - -#ifdef __ASM_NEED_64x0__ - - class Encoder64x0 final : public EncoderInterface - { - public: - explicit Encoder64x0() = default; - ~Encoder64x0() override = default; - - TOOLCHAINKIT_COPY_DEFAULT(Encoder64x0); - - virtual std::string CheckLine(std::string& line, - const std::string& file) override; - virtual bool WriteLine(std::string& line, const std::string& file) override; - virtual bool WriteNumber(const std::size_t& pos, - std::string& from_what) override; - }; - -#endif // __ASM_NEED_64x0__ - -#ifdef __ASM_NEED_32x0__ - - class Encoder32x0 final : public EncoderInterface - { - public: - explicit Encoder32x0() = default; - ~Encoder32x0() override = default; - - TOOLCHAINKIT_COPY_DEFAULT(Encoder32x0); - - virtual std::string CheckLine(std::string& line, - const std::string& file) override; - virtual bool WriteLine(std::string& line, const std::string& file) override; - virtual bool WriteNumber(const std::size_t& pos, - std::string& from_what) override; - }; - -#endif // __ASM_NEED_32x0__ - -#ifdef __ASM_NEED_PPC__ - - class EncoderPowerPC final : public EncoderInterface - { - public: - explicit EncoderPowerPC() = default; - ~EncoderPowerPC() override = default; - - TOOLCHAINKIT_COPY_DEFAULT(EncoderPowerPC); - - virtual std::string CheckLine(std::string& line, - const std::string& file) override; - virtual bool WriteLine(std::string& line, const std::string& file) override; - virtual bool WriteNumber(const std::size_t& pos, - std::string& from_what) override; - }; - -#endif // __ASM_NEED_32x0__ -} // namespace ToolchainKit diff --git a/dev/ToolchainKit/AAL/AssemblyInterface.h b/dev/ToolchainKit/AAL/AssemblyInterface.h new file mode 100644 index 0000000..8a7eb9d --- /dev/null +++ b/dev/ToolchainKit/AAL/AssemblyInterface.h @@ -0,0 +1,225 @@ +/* ------------------------------------------- + + Copyright (C) 2024, ELMH Group, all rights reserved + +------------------------------------------- */ + +#pragma once + +#include +#include +#include + +namespace ToolchainKit +{ + /// @brief Assembly to binary generator class. + /// @note This interface creates according to the CPU target of the child class. + class AssemblyInterface + { + public: + explicit AssemblyInterface() = default; + virtual ~AssemblyInterface() = default; + + TOOLCHAINKIT_COPY_DEFAULT(AssemblyInterface); + + /// @brief compile to object file. + /// @note Example C++ -> MASM -> AE object. + virtual Int32 CompileToFormat(std::string& src, Int32 arch) = 0; + }; + + /// @brief Simple assembly factory + class AssemblyFactory final + { + public: + explicit AssemblyFactory() = default; + ~AssemblyFactory() = default; + + TOOLCHAINKIT_COPY_DEFAULT(AssemblyFactory); + + public: + enum + { + kArchAMD64, + kArch32x0, + kArch64x0, + kArchRISCV, + kArchPowerPC, + kArchUnknown, + }; + + Int32 Compile(std::string& sourceFile, const Int32& arch) noexcept; + + void Mount(AssemblyInterface* mountPtr) noexcept; + AssemblyInterface* Unmount() noexcept; + + private: + AssemblyInterface* fMounted{nullptr}; + }; + + union NumberCastBase + { + NumberCastBase() = default; + ~NumberCastBase() = default; + }; + + union NumberCast64 final + { + NumberCast64() = default; + explicit NumberCast64(UInt64 raw) + : raw(raw) + { + } + + ~NumberCast64() + { + raw = 0; + } + + CharType number[8]; + UInt64 raw; + }; + + union NumberCast32 final + { + NumberCast32() = default; + explicit NumberCast32(UInt32 raw) + : raw(raw) + { + } + + ~NumberCast32() + { + raw = 0; + } + + CharType number[4]; + UInt32 raw; + }; + + union NumberCast16 final + { + NumberCast16() = default; + explicit NumberCast16(UInt16 raw) + : raw(raw) + { + } + + ~NumberCast16() + { + raw = 0; + } + + CharType number[2]; + UInt16 raw; + }; + + union NumberCast8 final + { + NumberCast8() = default; + explicit NumberCast8(UInt8 raw) + : raw(raw) + { + } + + ~NumberCast8() + { + raw = 0; + } + + CharType number; + UInt8 raw; + }; + + class EncoderInterface + { + public: + explicit EncoderInterface() = default; + virtual ~EncoderInterface() = default; + + TOOLCHAINKIT_COPY_DEFAULT(EncoderInterface); + + virtual std::string CheckLine(std::string& line, const std::string& file) = 0; + virtual bool WriteLine(std::string& line, const std::string& file) = 0; + virtual bool WriteNumber(const std::size_t& pos, std::string& from_what) = 0; + }; + +#ifdef __ASM_NEED_AMD64__ + + class EncoderAMD64 final : public EncoderInterface + { + public: + explicit EncoderAMD64() = default; + ~EncoderAMD64() override = default; + + TOOLCHAINKIT_COPY_DEFAULT(EncoderAMD64); + + virtual std::string CheckLine(std::string& line, + const std::string& file) override; + virtual bool WriteLine(std::string& line, const std::string& file) override; + virtual bool WriteNumber(const std::size_t& pos, + std::string& from_what) override; + + virtual bool WriteNumber16(const std::size_t& pos, std::string& from_what); + virtual bool WriteNumber32(const std::size_t& pos, std::string& from_what); + virtual bool WriteNumber8(const std::size_t& pos, std::string& from_what); + }; + +#endif // __ASM_NEED_AMD64__ + +#ifdef __ASM_NEED_64x0__ + + class Encoder64x0 final : public EncoderInterface + { + public: + explicit Encoder64x0() = default; + ~Encoder64x0() override = default; + + TOOLCHAINKIT_COPY_DEFAULT(Encoder64x0); + + virtual std::string CheckLine(std::string& line, + const std::string& file) override; + virtual bool WriteLine(std::string& line, const std::string& file) override; + virtual bool WriteNumber(const std::size_t& pos, + std::string& from_what) override; + }; + +#endif // __ASM_NEED_64x0__ + +#ifdef __ASM_NEED_32x0__ + + class Encoder32x0 final : public EncoderInterface + { + public: + explicit Encoder32x0() = default; + ~Encoder32x0() override = default; + + TOOLCHAINKIT_COPY_DEFAULT(Encoder32x0); + + virtual std::string CheckLine(std::string& line, + const std::string& file) override; + virtual bool WriteLine(std::string& line, const std::string& file) override; + virtual bool WriteNumber(const std::size_t& pos, + std::string& from_what) override; + }; + +#endif // __ASM_NEED_32x0__ + +#ifdef __ASM_NEED_PPC__ + + class EncoderPowerPC final : public EncoderInterface + { + public: + explicit EncoderPowerPC() = default; + ~EncoderPowerPC() override = default; + + TOOLCHAINKIT_COPY_DEFAULT(EncoderPowerPC); + + virtual std::string CheckLine(std::string& line, + const std::string& file) override; + virtual bool WriteLine(std::string& line, const std::string& file) override; + virtual bool WriteNumber(const std::size_t& pos, + std::string& from_what) override; + }; + +#endif // __ASM_NEED_32x0__ +} // namespace ToolchainKit diff --git a/dev/ToolchainKit/Parser.h b/dev/ToolchainKit/Parser.h index c8d6f2a..a8631e9 100644 --- a/dev/ToolchainKit/Parser.h +++ b/dev/ToolchainKit/Parser.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include namespace ToolchainKit diff --git a/dev/ToolchainKit/src/AssemblyFactory.cc b/dev/ToolchainKit/src/AssemblyFactory.cc index f6916ba..884ad22 100644 --- a/dev/ToolchainKit/src/AssemblyFactory.cc +++ b/dev/ToolchainKit/src/AssemblyFactory.cc @@ -4,7 +4,7 @@ ------------------------------------------- */ -#include +#include #include /** diff --git a/dev/ToolchainKit/src/Detail/AsmUtils.h b/dev/ToolchainKit/src/Detail/AsmUtils.h index dcd7834..19d863f 100644 --- a/dev/ToolchainKit/src/Detail/AsmUtils.h +++ b/dev/ToolchainKit/src/Detail/AsmUtils.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include using namespace ToolchainKit; diff --git a/dev/ToolchainKit/src/Detail/ClUtils.h b/dev/ToolchainKit/src/Detail/ClUtils.h index 2bf17f2..ca209f2 100644 --- a/dev/ToolchainKit/src/Detail/ClUtils.h +++ b/dev/ToolchainKit/src/Detail/ClUtils.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #define kZero64Section ".zero64" diff --git a/dev/ToolchainKit/src/DynamicLinker64PEF.cc b/dev/ToolchainKit/src/DynamicLinker64PEF.cc index d127376..0b5749d 100644 --- a/dev/ToolchainKit/src/DynamicLinker64PEF.cc +++ b/dev/ToolchainKit/src/DynamicLinker64PEF.cc @@ -19,7 +19,7 @@ #include //! Assembler Kit -#include +#include //! Preferred Executable Format #include -- cgit v1.2.3