From 6e5d314c20d05cc6a0c2262263b5aa26ab55636d Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Wed, 24 Apr 2024 02:14:20 -0500 Subject: [PATCH] Tweaked struct tag encoding so b*/m* tags are earlier These b*/m* struct tags have a common pattern that would be good to emphasize in the encoding. The later struct tags get a bit more messy as they leave space for future possible extensions. New encoding: LFSR_TAG_STRUCT 0x03tt v--- --11 -ttt ttrr LFSR_TAG_DATA 0x0300 v--- --11 ---- ---- LFSR_TAG_BLOCK 0x0304 v--- --11 ---- -1rr LFSR_TAG_BSHRUB 0x0308 v--- --11 ---- 1--- LFSR_TAG_BTREE 0x030c v--- --11 ---- 11rr LFSR_TAG_MROOT 0x0310 v--- --11 ---1 --rr LFSR_TAG_MDIR 0x0314 v--- --11 ---1 -1rr LFSR_TAG_MSHRUB* 0x0318 v--- --11 ---1 1--- LFSR_TAG_MTREE 0x031c v--- --11 ---1 11rr LFSR_TAG_DID 0x0320 v--- --11 --1- ---- LFSR_TAG_BRANCH 0x032c v--- --11 --1- 11rr * Hypothetical Note that all shrubs currently end with 1---, and all btrees, including the awkward branch tag, end with 11rr. This had no impact on code size: code stack before: 33564 2816 after: 33564 (+0.0%) 2816 (+0.0%) --- lfs.c | 10 +++++----- scripts/dbgbmap.py | 10 +++++----- scripts/dbgbtree.py | 14 +++++++------- scripts/dbglfs.py | 14 +++++++------- scripts/dbgmtree.py | 14 +++++++------- scripts/dbgrbyd.py | 14 +++++++------- scripts/dbgtag.py | 14 +++++++------- 7 files changed, 45 insertions(+), 45 deletions(-) diff --git a/lfs.c b/lfs.c index 5656d6df..3787a464 100644 --- a/lfs.c +++ b/lfs.c @@ -742,11 +742,11 @@ enum lfsr_tag { LFSR_TAG_BLOCK = 0x0304, LFSR_TAG_BSHRUB = 0x0308, LFSR_TAG_BTREE = 0x030c, - LFSR_TAG_DID = 0x0310, - LFSR_TAG_BRANCH = 0x031c, - LFSR_TAG_MROOT = 0x0321, - LFSR_TAG_MDIR = 0x0325, - LFSR_TAG_MTREE = 0x032c, + LFSR_TAG_MROOT = 0x0311, + LFSR_TAG_MDIR = 0x0315, + LFSR_TAG_MTREE = 0x031c, + LFSR_TAG_DID = 0x0320, + LFSR_TAG_BRANCH = 0x032c, // user/sys attributes LFSR_TAG_UATTR = 0x0400, diff --git a/scripts/dbgbmap.py b/scripts/dbgbmap.py index 2b92d18d..e9d17c76 100755 --- a/scripts/dbgbmap.py +++ b/scripts/dbgbmap.py @@ -32,11 +32,11 @@ TAG_DATA = 0x0300 TAG_BLOCK = 0x0304 TAG_BSHRUB = 0x0308 TAG_BTREE = 0x030c -TAG_DID = 0x0310 -TAG_BRANCH = 0x031c -TAG_MROOT = 0x0321 -TAG_MDIR = 0x0325 -TAG_MTREE = 0x032c +TAG_MROOT = 0x0311 +TAG_MDIR = 0x0315 +TAG_MTREE = 0x031c +TAG_DID = 0x0320 +TAG_BRANCH = 0x032c TAG_UATTR = 0x0400 TAG_SATTR = 0x0600 TAG_SHRUB = 0x1000 diff --git a/scripts/dbgbtree.py b/scripts/dbgbtree.py index 9be818ef..c002d7a8 100755 --- a/scripts/dbgbtree.py +++ b/scripts/dbgbtree.py @@ -30,11 +30,11 @@ TAG_DATA = 0x0300 TAG_BLOCK = 0x0304 TAG_BSHRUB = 0x0308 TAG_BTREE = 0x030c -TAG_DID = 0x0310 -TAG_BRANCH = 0x031c -TAG_MROOT = 0x0321 -TAG_MDIR = 0x0325 -TAG_MTREE = 0x032c +TAG_MROOT = 0x0311 +TAG_MDIR = 0x0315 +TAG_MTREE = 0x031c +TAG_DID = 0x0320 +TAG_BRANCH = 0x032c TAG_UATTR = 0x0400 TAG_SATTR = 0x0600 TAG_SHRUB = 0x1000 @@ -197,11 +197,11 @@ def tagrepr(tag, w=None, size=None, off=None): else 'block' if (tag & 0xfff) == TAG_BLOCK else 'bshrub' if (tag & 0xfff) == TAG_BSHRUB else 'btree' if (tag & 0xfff) == TAG_BTREE - else 'did' if (tag & 0xfff) == TAG_DID - else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'mroot' if (tag & 0xfff) == TAG_MROOT else 'mdir' if (tag & 0xfff) == TAG_MDIR else 'mtree' if (tag & 0xfff) == TAG_MTREE + else 'did' if (tag & 0xfff) == TAG_DID + else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'struct 0x%02x' % (tag & 0xff), ' w%d' % w if w else '', ' %s' % size if size is not None else '') diff --git a/scripts/dbglfs.py b/scripts/dbglfs.py index 7f628fb5..48a6a6c8 100755 --- a/scripts/dbglfs.py +++ b/scripts/dbglfs.py @@ -31,11 +31,11 @@ TAG_DATA = 0x0300 TAG_BLOCK = 0x0304 TAG_BSHRUB = 0x0308 TAG_BTREE = 0x030c -TAG_DID = 0x0310 -TAG_BRANCH = 0x031c -TAG_MROOT = 0x0321 -TAG_MDIR = 0x0325 -TAG_MTREE = 0x032c +TAG_MROOT = 0x0311 +TAG_MDIR = 0x0315 +TAG_MTREE = 0x031c +TAG_DID = 0x0320 +TAG_BRANCH = 0x032c TAG_UATTR = 0x0400 TAG_SATTR = 0x0600 TAG_SHRUB = 0x1000 @@ -228,11 +228,11 @@ def tagrepr(tag, w=None, size=None, off=None): else 'block' if (tag & 0xfff) == TAG_BLOCK else 'bshrub' if (tag & 0xfff) == TAG_BSHRUB else 'btree' if (tag & 0xfff) == TAG_BTREE - else 'did' if (tag & 0xfff) == TAG_DID - else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'mroot' if (tag & 0xfff) == TAG_MROOT else 'mdir' if (tag & 0xfff) == TAG_MDIR else 'mtree' if (tag & 0xfff) == TAG_MTREE + else 'did' if (tag & 0xfff) == TAG_DID + else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'struct 0x%02x' % (tag & 0xff), ' w%d' % w if w else '', ' %s' % size if size is not None else '') diff --git a/scripts/dbgmtree.py b/scripts/dbgmtree.py index cd0fffbf..7d87677a 100755 --- a/scripts/dbgmtree.py +++ b/scripts/dbgmtree.py @@ -30,11 +30,11 @@ TAG_DATA = 0x0300 TAG_BLOCK = 0x0304 TAG_BSHRUB = 0x0308 TAG_BTREE = 0x030c -TAG_DID = 0x0310 -TAG_BRANCH = 0x031c -TAG_MROOT = 0x0321 -TAG_MDIR = 0x0325 -TAG_MTREE = 0x032c +TAG_MROOT = 0x0311 +TAG_MDIR = 0x0315 +TAG_MTREE = 0x031c +TAG_DID = 0x0320 +TAG_BRANCH = 0x032c TAG_UATTR = 0x0400 TAG_SATTR = 0x0600 TAG_SHRUB = 0x1000 @@ -212,11 +212,11 @@ def tagrepr(tag, w=None, size=None, off=None): else 'block' if (tag & 0xfff) == TAG_BLOCK else 'bshrub' if (tag & 0xfff) == TAG_BSHRUB else 'btree' if (tag & 0xfff) == TAG_BTREE - else 'did' if (tag & 0xfff) == TAG_DID - else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'mroot' if (tag & 0xfff) == TAG_MROOT else 'mdir' if (tag & 0xfff) == TAG_MDIR else 'mtree' if (tag & 0xfff) == TAG_MTREE + else 'did' if (tag & 0xfff) == TAG_DID + else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'struct 0x%02x' % (tag & 0xff), ' w%d' % w if w else '', ' %s' % size if size is not None else '') diff --git a/scripts/dbgrbyd.py b/scripts/dbgrbyd.py index 83e35b3f..f469f253 100755 --- a/scripts/dbgrbyd.py +++ b/scripts/dbgrbyd.py @@ -39,11 +39,11 @@ TAG_DATA = 0x0300 TAG_BLOCK = 0x0304 TAG_BSHRUB = 0x0308 TAG_BTREE = 0x030c -TAG_DID = 0x0310 -TAG_BRANCH = 0x031c -TAG_MROOT = 0x0321 -TAG_MDIR = 0x0325 -TAG_MTREE = 0x032c +TAG_MROOT = 0x0311 +TAG_MDIR = 0x0315 +TAG_MTREE = 0x031c +TAG_DID = 0x0320 +TAG_BRANCH = 0x032c TAG_UATTR = 0x0400 TAG_SATTR = 0x0600 TAG_SHRUB = 0x1000 @@ -199,11 +199,11 @@ def tagrepr(tag, w=None, size=None, off=None): else 'block' if (tag & 0xfff) == TAG_BLOCK else 'bshrub' if (tag & 0xfff) == TAG_BSHRUB else 'btree' if (tag & 0xfff) == TAG_BTREE - else 'did' if (tag & 0xfff) == TAG_DID - else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'mroot' if (tag & 0xfff) == TAG_MROOT else 'mdir' if (tag & 0xfff) == TAG_MDIR else 'mtree' if (tag & 0xfff) == TAG_MTREE + else 'did' if (tag & 0xfff) == TAG_DID + else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'struct 0x%02x' % (tag & 0xff), ' w%d' % w if w else '', ' %s' % size if size is not None else '') diff --git a/scripts/dbgtag.py b/scripts/dbgtag.py index 85bc62f1..11969544 100755 --- a/scripts/dbgtag.py +++ b/scripts/dbgtag.py @@ -28,11 +28,11 @@ TAG_DATA = 0x0300 TAG_BLOCK = 0x0304 TAG_BSHRUB = 0x0308 TAG_BTREE = 0x030c -TAG_DID = 0x0310 -TAG_BRANCH = 0x031c -TAG_MROOT = 0x0321 -TAG_MDIR = 0x0325 -TAG_MTREE = 0x032c +TAG_MROOT = 0x0311 +TAG_MDIR = 0x0315 +TAG_MTREE = 0x031c +TAG_DID = 0x0320 +TAG_BRANCH = 0x032c TAG_UATTR = 0x0400 TAG_SATTR = 0x0600 TAG_SHRUB = 0x1000 @@ -157,11 +157,11 @@ def tagrepr(tag, w=None, size=None, off=None): else 'block' if (tag & 0xfff) == TAG_BLOCK else 'bshrub' if (tag & 0xfff) == TAG_BSHRUB else 'btree' if (tag & 0xfff) == TAG_BTREE - else 'did' if (tag & 0xfff) == TAG_DID - else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'mroot' if (tag & 0xfff) == TAG_MROOT else 'mdir' if (tag & 0xfff) == TAG_MDIR else 'mtree' if (tag & 0xfff) == TAG_MTREE + else 'did' if (tag & 0xfff) == TAG_DID + else 'branch' if (tag & 0xfff) == TAG_BRANCH else 'struct 0x%02x' % (tag & 0xff), ' w%d' % w if w else '', ' %s' % size if size is not None else '')