things for today

This commit is contained in:
2026-03-18 09:36:45 -06:00
parent 1422730cc8
commit f51b6edfbf
7 changed files with 200 additions and 4 deletions

6
.gitignore vendored
View File

@@ -0,0 +1,6 @@
# For now, ignore user builds
# We will eventually change to a custom
# build system.
# So hold on
/bin
/out

65
makefile Normal file
View File

@@ -0,0 +1,65 @@
#Compiler and Linker
CC := g++
#The Target Binary Program
TARGET := out.exe
#The Directories, Source, Includes, Objects, Binary and Resources
SRCDIR := src
BUILDDIR := bin
TARGETDIR := out
SRCEXT := cpp
DEPEXT := d
OBJEXT := o
#Flags, Libraries and Includes
ROOT := ./
CFLAGS := -Wall -std=c++20 -DSPIDER_COMPILING
LFLAGS := -Wall -std=c++20 -static
LIB :=
INC := -I./src/
#---------------------------------------------------------------------------------
#DO NOT EDIT BELOW THIS LINE
#---------------------------------------------------------------------------------
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT)))
#Defauilt Make
all: directories $(TARGET)
#Remake
remake: cleaner all
#Make the Directories
directories:
@mkdir -p $(TARGETDIR)
@mkdir -p $(BUILDDIR)
#Clean only Objecst
clean:
@$(RM) -rf $(BUILDDIR)
#Full Clean, Objects and Binaries
cleaner: clean
@$(RM) -rf $(TARGETDIR)
#Pull in dependency info for *existing* .o files
-include $(OBJECTS:.$(OBJEXT)=.$(DEPEXT))
#Link
$(TARGET): $(OBJECTS)
$(CC) $(LFLAGS) -o $(TARGETDIR)/$(TARGET) $^ $(LIB)
#Compile
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT)
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(INC) -c -o $@ $<
@$(CC) $(CFLAGS) -MM $(SRCDIR)/$*.$(SRCEXT) > $(BUILDDIR)/$*.$(DEPEXT)
@cp -f $(BUILDDIR)/$*.$(DEPEXT) $(BUILDDIR)/$*.$(DEPEXT).tmp
@sed -e 's|.*:|$(BUILDDIR)/$*.$(OBJEXT):|' < $(BUILDDIR)/$*.$(DEPEXT).tmp > $(BUILDDIR)/$*.$(DEPEXT)
@sed -e 's/.*://' -e 's/\\$$//' < $(BUILDDIR)/$*.$(DEPEXT).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(BUILDDIR)/$*.$(DEPEXT)
@rm -f $(BUILDDIR)/$*.$(DEPEXT).tmp
#Non-File Targets
.PHONY: all remake clean cleaner resources

88
pygen.ipynb Normal file
View File

@@ -0,0 +1,88 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "21877801",
"metadata": {},
"source": [
"## Python Generator\n",
"\n",
"This python notebook will serve to generate the necessary code to\n",
"generate some things from Spider.\n",
"\n",
"Specifically, it will generate the CPU instructions (currently)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b0fcd533",
"metadata": {},
"outputs": [],
"source": [
"# setup directories"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b33de8ac",
"metadata": {},
"outputs": [],
"source": [
"# Implement here some kind of \"C++\" printer"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58645013",
"metadata": {},
"outputs": [],
"source": [
"# read the instruction sheet with pandas"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "452bc76c",
"metadata": {},
"outputs": [],
"source": [
"# well, then export the masks (TODO)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5aaebef0",
"metadata": {},
"outputs": [],
"source": [
"# print the CPU Instructions"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@@ -5,6 +5,14 @@
} }
], ],
"settings": { "settings": {
"gitlens.remotes": [
{
"domain": "git.sintekanalytics.com",
"type": "Gitea",
"name": "Sintek Analytics' Git",
"protocol": "https",
}
],
"C_Cpp.default.includePath": [ "C_Cpp.default.includePath": [
"./src" "./src"
] ]

View File

@@ -0,0 +1,14 @@
#include "SpiderRuntime.hpp"
#include <iostream>
namespace spider {
}
int main() {
std::cout << "Hello World" << std::endl;
return 0;
}

View File

@@ -21,9 +21,24 @@ namespace spider {
u64 RV; u64 RV;
u64 RM; u64 RM;
public:
/**
* These are private registers, which are only used
* whenever constant things are used.
* This way we don't "write" into constant values, rather
* we write into a writeable var which is "hidden"
*/
register_t ALU0, ALU1;
public: public:
CPU(); CPU();
~CPU(); ~CPU();
public:
// <pygen-target name=cpu-instructions> //
// </pygen-target> //
}; };
} }

View File

@@ -40,16 +40,16 @@
#define SPIDER_LITTLE_ENDIAN 1 #define SPIDER_LITTLE_ENDIAN 1
#define SPIDER_BIG_ENDIAN 0 #define SPIDER_BIG_ENDIAN 0
#else #else
#error "Unsupported or unknown architecture endianness!" #error "[Spider Machine] Unsupported or unknown architecture endianness!"
#endif #endif
#endif #endif
// Safety checks // Safety checks
#if !defined(SPIDER_LITTLE_ENDIAN) || !defined(SPIDER_BIG_ENDIAN) #if !defined(SPIDER_LITTLE_ENDIAN) || !defined(SPIDER_BIG_ENDIAN)
#error "Missed at least one little/big endian macros" #error "[Spider Machine] Missed at least one little/big endian macros"
#endif #endif
#if SPIDER_LITTLE_ENDIAN == 1 && SPIDER_BIG_ENDIAN == 1 #if SPIDER_LITTLE_ENDIAN == 1 && SPIDER_BIG_ENDIAN == 1
#warning "Mixed endian machine detected, unsupported! Be cautious adventurer!" #warning "[Spider Machine] Mixed endian machine detected, unsupported! Be cautious adventurer!"
#endif #endif
@@ -86,7 +86,7 @@
#define SPIDER_BEGIN_PACKED #define SPIDER_BEGIN_PACKED
#define SPIDER_END_PACKED #define SPIDER_END_PACKED
#define SPIDER_PACKED_STRUCT(decl) decl #define SPIDER_PACKED_STRUCT(decl) decl
#warning "MODEM: Compiler packing not supported. Memory layout may be unstable!" #warning "[Spider Machine] Compiler packing not supported. Memory layout may be unstable!"
#endif #endif
namespace spider {} namespace spider {}