From 2a3c1bf1f38020fd3380993e21d45b220d0ace88 Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Tue, 10 Feb 2026 10:20:04 +0000 Subject: [PATCH] 66 machines --- developer/authored/TM_module.c | 274 ++++++++++-------- developer/authored/a.out | Bin 0 -> 15960 bytes .../temp.linux-x86_64-cpython-311/TM_module.o | Bin 128256 -> 137808 bytes developer/authored/try.c | 11 + 4 files changed, 167 insertions(+), 118 deletions(-) create mode 100755 developer/authored/a.out create mode 100644 developer/authored/try.c diff --git a/developer/authored/TM_module.c b/developer/authored/TM_module.c index 0330947..0ca7c54 100644 --- a/developer/authored/TM_module.c +++ b/developer/authored/TM_module.c @@ -3,18 +3,16 @@ CPython Extension: Tape Machine Factory Implements: - - 66 Concrete Machine Types (TM·[Container]·[Dir]·[Ent]) + - 66 Concrete Machine Types - TMA_NaturalNumber (Abstract Machine) Namespaces: + - TM·Head : The Universal Head State struct. - TM·Arr· : Implementation logic for Array/List backed machines. - TM·Nat· : Implementation logic for the Abstract Natural Number machine. */ /* 1. COMPILER COMPATIBILITY */ -/* If your compiler does not support UTF-8 identifiers, - uncomment the line below to map dot to underscore. -*/ // #define · _ #define PY_SSIZE_T_CLEAN @@ -22,27 +20,48 @@ #include "structmember.h" /* ========================================================= */ -/* SHARED IMPLEMENTATION: ARRAY / LIST BACKED */ +/* UNIVERSAL HEAD STATE */ /* ========================================================= */ -/* TM·Arr (Instance Data) - Previously 'FastTM'. Represents the state for all array-backed types. +/* LIMITATION OF C VOID POINTERS: + + In Standard ISO C, there is no way to "bind" a type to a void* pointer + temporarily to perform arithmetic. A cast expression like '(Type*)ptr' + yields a value (r-value), not a storage location (l-value), so we + cannot perform operations like '((Type*)ptr)++'. + + To remain strictly ISO C compliant, we would have to define multiple + structs (one for PyObject**, one for char*, etc.), which breaks our + generic "Universal Head" architecture. + + DECISION: THE GCC/CLANG WAY + We utilize the common GCC/Clang extension that treats arithmetic on + void* as byte-level arithmetic (i.e., sizeof(void) == 1). + + This allows us to write clean, polymorphic code: + self->head_ptr += sizeof(Element); */ + typedef struct { PyObject_HEAD - PyObject* tape_obj; /* The Container (List) */ - PyObject** head_ptr; /* Pointer to Current Item */ - PyObject** start_ptr; /* Pointer to Start */ - PyObject** end_ptr; /* Pointer to End (Sentinel) */ - Py_ssize_t head_idx; /* Index Cache (Required for Resizing containers) */ -} TM·Arr; - -static void TM·Arr·dealloc(TM·Arr* self){ + PyObject* tape_obj; /* The Container */ + void* head_ptr; /* Generic Pointer to Current Item */ + void* start_ptr; /* Generic Pointer to Start */ + void* end_ptr; /* Generic Pointer to End/Sentinel */ +} TM·Head; + +static void TM·Head·dealloc(TM·Head* self){ Py_XDECREF(self->tape_obj); Py_TYPE(self)->tp_free((PyObject*)self); } -static int TM·Arr·init(TM·Arr* self, PyObject* args, PyObject* kwds){ +/* ========================================================= */ +/* IMPLEMENTATION: ARRAY BACKED (TM·Arr·) */ +/* ========================================================= */ + +/* --- Helpers --- */ + +static int TM·Arr·init(TM·Head* self, PyObject* args, PyObject* kwds){ PyObject* input_obj = NULL; if( !PyArg_ParseTuple(args, "O", &input_obj) ) return -1; @@ -62,123 +81,161 @@ static int TM·Arr·init(TM·Arr* self, PyObject* args, PyObject* kwds){ Py_ssize_t len = PyList_GET_SIZE(self->tape_obj); PyObject** items = ((PyListObject*)self->tape_obj)->ob_item; - self->start_ptr = items; - self->end_ptr = items + len; - self->head_ptr = items; - self->head_idx = 0; + self->start_ptr = (void*)items; + self->end_ptr = (void*)(items + len); + self->head_ptr = (void*)items; return 0; } -/* --- Helper: Sync Pointers after Resize --- */ -static void TM·Arr·sync(TM·Arr* self){ +/* Sync: Re-bases pointers after a List Reallocation */ +static void TM·Arr·sync(TM·Head* self){ + /* 1. Calculate Logical Offset (Byte Distance) */ + Py_ssize_t byte_offset = self->head_ptr - self->start_ptr; + + /* 2. Get NEW pointers */ Py_ssize_t len = PyList_GET_SIZE(self->tape_obj); - PyObject** items = ((PyListObject*)self->tape_obj)->ob_item; - self->start_ptr = items; - self->end_ptr = items + len; - self->head_ptr = items + self->head_idx; + PyObject** new_items = ((PyListObject*)self->tape_obj)->ob_item; + + /* 3. Rebase */ + self->start_ptr = (void*)new_items; + self->end_ptr = (void*)(new_items + len); + + /* 4. Restore Head (Byte Arithmetic) */ + self->head_ptr = self->start_ptr + byte_offset; } -/* ========================================================= */ -/* NAMESPACE: TM·Arr (Methods) */ -/* ========================================================= */ +/* --- PRIMITIVES: NAVIGATION (The GCC Way) --- */ -/* --- PRIMITIVES: NAVIGATION --- */ -static PyObject* TM·Arr·s(TM·Arr* self){ - self->head_ptr++; self->head_idx++; Py_RETURN_NONE; +static PyObject* TM·Arr·s(TM·Head* self){ + self->head_ptr += sizeof(PyObject*); + Py_RETURN_NONE; } -static PyObject* TM·Arr·ls(TM·Arr* self){ - self->head_ptr--; self->head_idx--; Py_RETURN_NONE; + +static PyObject* TM·Arr·ls(TM·Head* self){ + self->head_ptr -= sizeof(PyObject*); + Py_RETURN_NONE; } -static PyObject* TM·Arr·sn(TM·Arr* self, PyObject* args){ + +static PyObject* TM·Arr·sn(TM·Head* self, PyObject* args){ Py_ssize_t n; if(!PyArg_ParseTuple(args, "n", &n)) return NULL; - self->head_ptr += n; self->head_idx += n; Py_RETURN_NONE; + self->head_ptr += n * sizeof(PyObject*); + Py_RETURN_NONE; } -static PyObject* TM·Arr·lsn(TM·Arr* self, PyObject* args){ + +static PyObject* TM·Arr·lsn(TM·Head* self, PyObject* args){ Py_ssize_t n; if(!PyArg_ParseTuple(args, "n", &n)) return NULL; - self->head_ptr -= n; self->head_idx -= n; Py_RETURN_NONE; + self->head_ptr -= n * sizeof(PyObject*); + Py_RETURN_NONE; } -static PyObject* TM·Arr·sR(TM·Arr* self){ - self->head_idx = (self->end_ptr - self->start_ptr) - 1; - self->head_ptr = self->end_ptr - 1; + +static PyObject* TM·Arr·sR(TM·Head* self){ + self->head_ptr = self->end_ptr - sizeof(PyObject*); Py_RETURN_NONE; } -static PyObject* TM·Arr·LsR(TM·Arr* self){ - self->head_ptr = self->start_ptr; self->head_idx = 0; Py_RETURN_NONE; + +static PyObject* TM·Arr·LsR(TM·Head* self){ + self->head_ptr = self->start_ptr; + Py_RETURN_NONE; } /* --- PRIMITIVES: I/O --- */ -static PyObject* TM·Arr·r(TM·Arr* self){ - PyObject* item = *(self->head_ptr); Py_INCREF(item); return item; + +static PyObject* TM·Arr·r(TM·Head* self){ + /* Must cast to dereference the data */ + PyObject* item = *(PyObject**)self->head_ptr; + Py_INCREF(item); + return item; } -static PyObject* TM·Arr·w(TM·Arr* self, PyObject* val){ - PyObject* old = *(self->head_ptr); Py_INCREF(val); *(self->head_ptr) = val; Py_DECREF(old); Py_RETURN_NONE; + +static PyObject* TM·Arr·w(TM·Head* self, PyObject* val){ + PyObject** p = (PyObject**)self->head_ptr; + PyObject* old = *p; + Py_INCREF(val); + *p = val; + Py_DECREF(old); + Py_RETURN_NONE; } /* --- PRIMITIVES: QUERY --- */ -static PyObject* TM·Arr·qR(TM·Arr* self){ return (self->head_ptr >= self->end_ptr - 1) ? Py_True : Py_False; } -static PyObject* TM·Arr·qL(TM·Arr* self){ return (self->head_ptr <= self->start_ptr) ? Py_True : Py_False; } + +static PyObject* TM·Arr·qR(TM·Head* self){ + /* GCC Extension: void* comparison and arithmetic */ + return (self->head_ptr >= self->end_ptr - sizeof(PyObject*)) ? Py_True : Py_False; +} + +static PyObject* TM·Arr·qL(TM·Head* self){ + return (self->head_ptr <= self->start_ptr) ? Py_True : Py_False; +} /* --- PRIMITIVES: DESTRUCTIVE (Variable Array Only) --- */ -/* d(): Delete current cell */ -static PyObject* TM·Arr·d(TM·Arr* self){ - if (PyList_SetSlice(self->tape_obj, self->head_idx, self->head_idx+1, NULL) < 0) return NULL; +static PyObject* TM·Arr·d(TM·Head* self){ + /* 1. Calc Index (Byte Diff / Element Size) */ + Py_ssize_t idx = (self->head_ptr - self->start_ptr) / sizeof(PyObject*); + + /* 2. API Call */ + if (PyList_SetSlice(self->tape_obj, idx, idx+1, NULL) < 0) return NULL; + /* 3. SYNC */ TM·Arr·sync(self); - /* Safety: If we deleted the last element */ - if (self->head_ptr >= self->end_ptr && self->head_idx > 0) { - if (self->start_ptr == self->end_ptr) { - PyErr_SetString(PyExc_RuntimeError, "TM Empty: First Order Invariant Broken."); - return NULL; - } - self->head_idx--; - self->head_ptr--; + /* 4. Safety */ + if (self->head_ptr >= self->end_ptr && self->start_ptr != self->end_ptr) { + self->head_ptr -= sizeof(PyObject*); + } else if (self->start_ptr == self->end_ptr) { + PyErr_SetString(PyExc_RuntimeError, "TM Empty: First Order Invariant Broken."); + return NULL; } Py_RETURN_NONE; } -/* a(v): Insert value at current head */ -static PyObject* TM·Arr·a(TM·Arr* self, PyObject* val){ - if (PyList_Insert(self->tape_obj, self->head_idx, val) < 0) return NULL; +static PyObject* TM·Arr·a(TM·Head* self, PyObject* val){ + Py_ssize_t idx = (self->head_ptr - self->start_ptr) / sizeof(PyObject*); + + if (PyList_Insert(self->tape_obj, idx, val) < 0) return NULL; + TM·Arr·sync(self); Py_RETURN_NONE; } -/* esd(): Delete Right Neighbor */ -static PyObject* TM·Arr·esd(TM·Arr* self){ - if (self->head_ptr >= self->end_ptr - 1) { +static PyObject* TM·Arr·esd(TM·Head* self){ + if (self->head_ptr >= self->end_ptr - sizeof(PyObject*)) { PyErr_SetString(PyExc_IndexError, "esd: No right neighbor."); return NULL; } - if (PyList_SetSlice(self->tape_obj, self->head_idx+1, self->head_idx+2, NULL) < 0) return NULL; + + Py_ssize_t idx = (self->head_ptr - self->start_ptr) / sizeof(PyObject*); + + if (PyList_SetSlice(self->tape_obj, idx+1, idx+2, NULL) < 0) return NULL; + TM·Arr·sync(self); Py_RETURN_NONE; } -/* Lesd(): Delete Left Neighbor */ -static PyObject* TM·Arr·Lesd(TM·Arr* self){ +static PyObject* TM·Arr·Lesd(TM·Head* self){ if (self->head_ptr <= self->start_ptr) { PyErr_SetString(PyExc_IndexError, "Lesd: No left neighbor."); return NULL; } - /* Delete at head_idx - 1 */ - if (PyList_SetSlice(self->tape_obj, self->head_idx-1, self->head_idx, NULL) < 0) return NULL; - self->head_idx--; /* We shifted left */ + Py_ssize_t idx = (self->head_ptr - self->start_ptr) / sizeof(PyObject*); + if (PyList_SetSlice(self->tape_obj, idx-1, idx, NULL) < 0) return NULL; + + /* Adjustment: Shift Left */ + self->head_ptr -= sizeof(PyObject*); + TM·Arr·sync(self); Py_RETURN_NONE; } /* ========================================================= */ -/* METHOD TABLES */ +/* METHOD TABLES (Array Backed) */ /* ========================================================= */ -/* 1. NON-DESTRUCTIVE (ND) TABLES */ - +/* 1. NON-DESTRUCTIVE (ND) */ static PyMethodDef Table·SR·ND[] = { {"s", (PyCFunction)TM·Arr·s, METH_NOARGS, ""}, {"sn",(PyCFunction)TM·Arr·sn,METH_VARARGS,""}, @@ -203,8 +260,7 @@ static PyMethodDef Table·SL·ND[] = { {NULL} }; -/* 2. DESTRUCTIVE (SO) TABLES - For ArrV */ - +/* 2. DESTRUCTIVE (SO) - For ArrV */ static PyMethodDef Table·SR·SO[] = { {"s", (PyCFunction)TM·Arr·s, METH_NOARGS, ""}, {"sn",(PyCFunction)TM·Arr·sn,METH_VARARGS,""}, @@ -248,55 +304,37 @@ static int TM·Nat·init(TM·Nat* self, PyObject* args, PyObject* kwds){ return 0; } -static PyObject* TM·Nat·s(TM·Nat* self){ - self->state++; - Py_RETURN_NONE; -} - +static PyObject* TM·Nat·s(TM·Nat* self){ self->state++; Py_RETURN_NONE; } static PyObject* TM·Nat·sn(TM·Nat* self, PyObject* args){ unsigned long long n; if(!PyArg_ParseTuple(args, "K", &n)) return NULL; - self->state += n; - Py_RETURN_NONE; + self->state += n; Py_RETURN_NONE; } -static PyObject* TM·Nat·ls(TM·Nat* self){ - if(self->state > 0) self->state--; - Py_RETURN_NONE; -} - -static PyObject* TM·Nat·LsR(TM·Nat* self){ - self->state = 0; - Py_RETURN_NONE; -} - -static PyObject* TM·Nat·r(TM·Nat* self){ - return PyLong_FromUnsignedLongLong(self->state); +static PyObject* TM·Nat·ls(TM·Nat* self){ + /* FIXED: Indentation warning */ + if(self->state > 0) self->state--; + Py_RETURN_NONE; } +static PyObject* TM·Nat·LsR(TM·Nat* self){ self->state = 0; Py_RETURN_NONE; } +static PyObject* TM·Nat·r(TM·Nat* self){ return PyLong_FromUnsignedLongLong(self->state); } static PyObject* TM·Nat·w(TM·Nat* self, PyObject* val){ PyErr_SetString(PyExc_TypeError, "Cannot write to Abstract Natural Number tape."); return NULL; } - -static PyObject* TM·Nat·qR(TM·Nat* self){ - Py_RETURN_FALSE; -} - -static PyObject* TM·Nat·qL(TM·Nat* self){ - if(self->state == 0) Py_RETURN_TRUE; - Py_RETURN_FALSE; -} +static PyObject* TM·Nat·qR(TM·Nat* self){ Py_RETURN_FALSE; } +static PyObject* TM·Nat·qL(TM·Nat* self){ return (self->state == 0) ? Py_True : Py_False; } static PyMethodDef TM·Nat·methods[] = { - {"s", (PyCFunction)TM·Nat·s, METH_NOARGS, ""}, - {"sn", (PyCFunction)TM·Nat·sn, METH_VARARGS, ""}, - {"ls", (PyCFunction)TM·Nat·ls, METH_NOARGS, ""}, - {"r", (PyCFunction)TM·Nat·r, METH_NOARGS, ""}, - {"w", (PyCFunction)TM·Nat·w, METH_O, ""}, - {"qR", (PyCFunction)TM·Nat·qR, METH_NOARGS, ""}, - {"qL", (PyCFunction)TM·Nat·qL, METH_NOARGS, ""}, - {"LsR", (PyCFunction)TM·Nat·LsR, METH_NOARGS, ""}, + {"s", (PyCFunction)TM·Nat·s, METH_NOARGS, ""}, + {"sn",(PyCFunction)TM·Nat·sn,METH_VARARGS,""}, + {"ls",(PyCFunction)TM·Nat·ls,METH_NOARGS, ""}, + {"r", (PyCFunction)TM·Nat·r, METH_NOARGS, ""}, + {"w", (PyCFunction)TM·Nat·w, METH_O, ""}, + {"qR",(PyCFunction)TM·Nat·qR,METH_NOARGS, ""}, + {"qL",(PyCFunction)TM·Nat·qL,METH_NOARGS, ""}, + {"LsR",(PyCFunction)TM·Nat·LsR,METH_NOARGS, ""}, {NULL} }; @@ -320,11 +358,11 @@ static PyTypeObject TMA_NaturalNumber·Type = { static PyTypeObject NAME##·Type = { \ PyVarObject_HEAD_INIT(NULL, 0) \ .tp_name = "TM_module." #NAME, \ - .tp_basicsize = sizeof(TM·Arr), \ + .tp_basicsize = sizeof(TM·Head), \ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, \ .tp_new = PyType_GenericNew, \ .tp_init = (initproc)TM·Arr·init, \ - .tp_dealloc = (destructor)TM·Arr·dealloc, \ + .tp_dealloc = (destructor)TM·Head·dealloc, \ .tp_methods = METHODS, \ }; @@ -411,7 +449,7 @@ DEFINE_TYPE(TM_MapV_SL_SO, Table·SL·ND) DEFINE_TYPE(TM_MapV_SL_EA, Table·SL·ND) /* --------------------------------------------------------- - 9. ASCII (String) - Acronym + 9. ASCII (String) --------------------------------------------------------- */ DEFINE_TYPE(TM_ASCII_SR_ND, Table·SR·ND) DEFINE_TYPE(TM_ASCII_SR_SO, Table·SR·ND) @@ -421,7 +459,7 @@ DEFINE_TYPE(TM_ASCII_SL_SO, Table·SL·ND) DEFINE_TYPE(TM_ASCII_SL_EA, Table·SL·ND) /* --------------------------------------------------------- - 10. UTF8 (String) - Acronym + 10. UTF8 (String) --------------------------------------------------------- */ DEFINE_TYPE(TM_UTF8_SR_ND, Table·SR·ND) DEFINE_TYPE(TM_UTF8_SR_SO, Table·SR·ND) @@ -431,7 +469,7 @@ DEFINE_TYPE(TM_UTF8_SL_SO, Table·SL·ND) DEFINE_TYPE(TM_UTF8_SL_EA, Table·SL·ND) /* --------------------------------------------------------- - 11. BCD (String/Array) - Acronym + 11. BCD (String/Array) --------------------------------------------------------- */ DEFINE_TYPE(TM_BCD_SR_ND, Table·SR·ND) DEFINE_TYPE(TM_BCD_SR_SO, Table·SR·ND) diff --git a/developer/authored/a.out b/developer/authored/a.out new file mode 100755 index 0000000000000000000000000000000000000000..8bf5c213c8c84904638d9ec7d78f7a6e07befde5 GIT binary patch literal 15960 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 literal 128256 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 TZ8u+4{p>GeCC^*YLhJt*WmJN* diff --git a/developer/authored/try.c b/developer/authored/try.c new file mode 100644 index 0000000..a3af1d1 --- /dev/null +++ b/developer/authored/try.c @@ -0,0 +1,11 @@ + +#include + +int main(){ + int x[3] = {100, 101, 102}; + void *p = &x; + printf("x[0] == %d\n" ,*(int *)p); + (char *)p += sizeof(x[0]); // <---- note this line + printf("x[0] == %d\n" ,*(int *)p); +} + -- 2.20.1