diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-20 09:19:44 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-20 09:19:44 -0500 |
| commit | 274936aa8c14c09239f771bce5b5cc5b6ae507a2 (patch) | |
| tree | 6c16ac05bb73c7aea0bb4a69f5bc77c2f6ca2d77 | |
| parent | 3cc0546417ed38c69a5ba0af1d7fd4c47af1401f (diff) | |
| parent | 56db5137ddd10f476b9820944b47ab72c6f8e019 (diff) | |
Merge pull request #25 from nekernel-org/dev
first set of patches to stable.
| -rw-r--r-- | .github/workflows/necti-dev.yml | 3 | ||||
| -rw-r--r-- | dev/CompilerKit/AE.h | 6 | ||||
| -rw-r--r-- | dev/CompilerKit/Frontend.h | 6 | ||||
| -rw-r--r-- | dev/CompilerKit/PEF.h | 2 | ||||
| -rw-r--r-- | dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc | 14 | ||||
| -rw-r--r-- | dev/LibC++/filesystem.h | 2 | ||||
| -rw-r--r-- | dev/LibC++/new.cc | 8 | ||||
| -rw-r--r-- | dev/LibC++/new.h | 39 |
8 files changed, 48 insertions, 32 deletions
diff --git a/.github/workflows/necti-dev.yml b/.github/workflows/necti-dev.yml index de50a30..a3dd77c 100644 --- a/.github/workflows/necti-dev.yml +++ b/.github/workflows/necti-dev.yml @@ -15,7 +15,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Packages run: sudo apt update && sudo apt install build-essential && sudo apt install libboost-dev - - name: Build - run: cd dev/CompilerKit && nebuild ck-posix.json + diff --git a/dev/CompilerKit/AE.h b/dev/CompilerKit/AE.h index b8e076d..3ca14e6 100644 --- a/dev/CompilerKit/AE.h +++ b/dev/CompilerKit/AE.h @@ -12,10 +12,10 @@ #include <CompilerKit/Defines.h> -#define kAEVer (0x0120) +#define kAEVer (0x0121) -#define kAEMag0 'O' -#define kAEMag1 'B' +#define kAEMag0 'A' +#define kAEMag1 'E' #define kAESymbolLen (255) #define kAEPad (8) diff --git a/dev/CompilerKit/Frontend.h b/dev/CompilerKit/Frontend.h index 225de96..500f952 100644 --- a/dev/CompilerKit/Frontend.h +++ b/dev/CompilerKit/Frontend.h @@ -18,7 +18,7 @@ struct SyntaxLeafList; struct CompilerKeyword; /// =========================================================== /// -/// we want to do that because to separate keywords. +/// @note we want to do that to separate keywords. /// =========================================================== /// enum KeywordKind { @@ -79,7 +79,7 @@ struct SyntaxLeafList final { }; std::vector<SyntaxLeaf> fLeafList; - SizeType fNumLeafs; + SizeType fNumLeafs{0}; SizeType SizeOf() { return fNumLeafs; } std::vector<SyntaxLeaf>& Get() { return fLeafList; } @@ -116,7 +116,7 @@ class CompilerFrontendInterface { /// =========================================================== /// // NOTE: cast this to your user defined ast. /// =========================================================== /// - typedef void* AstType; + typedef VoidPtr AstType; /// =========================================================== /// //! @brief Compile a syntax tree ouf of the text. diff --git a/dev/CompilerKit/PEF.h b/dev/CompilerKit/PEF.h index dd2e03a..fc36fd7 100644 --- a/dev/CompilerKit/PEF.h +++ b/dev/CompilerKit/PEF.h @@ -46,7 +46,7 @@ enum { kPefArchIntel86S, kPefArchAMD64, kPefArchRISCV, - kPefArch64000, /* 64x0 RISC architecture. */ + kPefArch64000, /* Open64x0 RISC architecture. */ kPefArch32000, kPefArchPowerPC, /* 64-bit POWER architecture. */ kPefArchARM64, diff --git a/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc b/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc index 7c761f4..a13aa0e 100644 --- a/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc +++ b/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc @@ -90,14 +90,6 @@ struct CompilerState final { CompilerKit::STLString fLastError{}; }; -/// @brief prints an error into stdout. -/// @param reason the reason of the error. -/// @param file where does it originate from? -void print_error(const CompilerKit::STLString& reason, - const CompilerKit::STLString& file) noexcept { - kPrintErr << kRed << "Error in " << file << ": " << reason << kWhite << std::endl; -} - static CompilerState kState; static Int32 kOnClassScope = 0; @@ -180,7 +172,7 @@ CompilerKit::SyntaxLeafList::SyntaxLeaf CompilerFrontendCPlusPlusAMD64::Compile( CompilerKit::STLString text, CompilerKit::STLString file) { CompilerKit::SyntaxLeafList::SyntaxLeaf syntax_tree; - if (text.length() < 1) return syntax_tree; + if (text.empty()) return syntax_tree; std::size_t index = 0UL; std::vector<std::pair<CompilerKit::CompilerKeyword, std::size_t>> keywords_list; @@ -755,8 +747,8 @@ class AssemblyCPlusPlusInterfaceAMD64 final CK_ASSEMBLY_INTERFACE { CompilerKit::STLString line_source; - out_fp << "#bits 64\n"; - out_fp << "#org " << kOrigin << "\n\n"; + out_fp << "%bits 64\n"; + out_fp << "%org " << kOrigin << "\n\n"; while (std::getline(src_fp, line_source)) { out_fp << kFrontend->Compile(line_source, src).fUserValue; diff --git a/dev/LibC++/filesystem.h b/dev/LibC++/filesystem.h index 59e73a0..0a1a39a 100644 --- a/dev/LibC++/filesystem.h +++ b/dev/LibC++/filesystem.h @@ -9,6 +9,8 @@ #include <LibC++/defines.h> +/// @brief Filesystem module for LibC++ + namespace std { class path; class filesystem_error; diff --git a/dev/LibC++/new.cc b/dev/LibC++/new.cc new file mode 100644 index 0000000..4882652 --- /dev/null +++ b/dev/LibC++/new.cc @@ -0,0 +1,8 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. + +------------------------------------------- */ + +#include <LibC++/new.h> + diff --git a/dev/LibC++/new.h b/dev/LibC++/new.h index 8b09328..3ac60d7 100644 --- a/dev/LibC++/new.h +++ b/dev/LibC++/new.h @@ -1,4 +1,3 @@ - /* ------------------------------------------- Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. @@ -9,21 +8,37 @@ #include <LibC++/defines.h> -struct __placement_new_info; +namespace std { +struct placement_new; + +/// ========================================================= +/// @brief Disambugate non-throwing allocation functions. +/// ========================================================= +struct nothrow_t { + explicit nothrow_t() = default; +}; + +/// ========================================================= +/// @brief Placement new metadata. +/// ========================================================= +struct placement_new { + void* __base; + int __align; + long long __size; +}; + +using placement_new_t = placement_new; +} // namespace std void* operator new(size_t); void* operator new[](size_t); +void* operator new(size_t, const std::nothrow_t&) noexcept; +void* operator new(size_t, void*) noexcept; +void* operator new[](size_t, const std::nothrow_t&) noexcept; +void* operator new[](size_t, void*) noexcept; + void operator delete(void*) noexcept; -void operator delete(void*, unsigned long) noexcept; +void operator delete(void*, size_t) noexcept; void operator delete[](void*) noexcept; - -/// ========================================================= -/// @brief Placement new information structure -/// ========================================================= -struct __placement_new_info { - void* __base; - int __align; - long long __size; -};
\ No newline at end of file |
