dd86k's blog

Machine code enthusiast

What’s In Progress – May 2023, Wait, What?

Author: dd
Published: May 20, 2023
Categories:

What happened all this time?

Context

When the year started, by the start of January, things turned for the worse, and I didn’t want to socially interact with anyone. I just really hated people.

On top of that, the baggage of my current projects just brought me down so much. I couldn’t do it. I couldn’t think of anything properly. Not going to go into details, but it took all my energy to work on my projects.

Worse, on April 1st, I got involved in a snowmobile accident, where my right shoulder backbone (acromion) was fractured. For a solid 2 weeks, I could not use my keyboard and mouse.

And again, on May 18th, I landed in the bushes at 30 km/h and lost my glasses. Really a close call to the water and miraculously did not break any bone.

Things really sucked in a way for 2023 H1. Emotionally, physically, and financially (okay, not as much).

On the Bright Side

However, around March, I started to dip my toes into video game development (“gamedev”) using Godot 4, and I really love it! Well, until the snowmobile accident, which I did recover from now regardless.

With that, I did start four new projects since I was really into it. Just mostly to mess around, though, but nothing’s ready, so I’m not saying much more. One focusing on GUI, one focusing on 2D, one focusing on 3D, and another focusing on XR (after I learn more on the 3D one…). More or less in order.

I started opening up to people again around April, so not everything has been bad. I’m also opening up a little more on these blog posts as well. Probably make an opinion or two, talk about news, or who knows, if you’re happy reading these, then so am I.

X86-S, for Simple, or Suffering?

After seeing Intel’s announcement to simplify x86-64, I read the X86-S External Architectural Specification v1.0, April 2023 white paper and honestly? I’m not against it whatsoever, because, let’s be frank (who’s frank?), they’re only catching up to Arm.

In summary, it gets rid of vm86 and 32-bit protected modes (including everything in-between like SMM), disabling the x87 FPU (‽), rings 1 and 2, segment bases (except FS/GS/GDT/IDT/LDT/TSS), #SS and #NP, and string I/O instructions.

Don’t worry, 32-bit compatibility (under x86-64 systems) is kept, just like Armv8. I’m looking at apps like Telegram and Discord on Windows built as 32-bit apps to try and save memory. Have to keep those!

Why keep TSS (Task-State Segment) at all? Linux! It uses a TSS base for each processor core for both 32-bit and 64-bit modes, though in 64-bit modes, it (only?) reloads SP0 between processes. We also have to thank Linux for the 5th Page Level (5PL, aka LA57). Who knows what Windows does.

And yeah, Intel can get away with it since they removed 16-bit/32-bit/CSM modes from EFI in 2020. They also removed the infamous A20 gate in 2008.

Anyway, I hope these changes gets rid of a bunch of some legacy baggage for some die space. Intel is indeed trying not to remove too much because of that big, nasty legacy baggage. Good for you, Intel, I guess.

Though, knowing Intel, I’m sure this won’t bring the price of their processors and licensing down a bit.

Projects

Now, I do wish I’d have the same interest for my older projects, but that’ll have to wait… For now, I’ve been very lax on them with the recent stuff happening.

So here’s what I managed to have done (or planning to do).

alicedbg

Surprise! I’m working on this again. Since I started a particular project using Godot, I’m using alicedbg as a library to go with it, which means new stuff. For v0.1, I’m undergoing with the following changes.

First, process memory map. This has been implemented for both Windows and Linux (inspired from libscanmem). BSDs are planned since they do use binary interfaces, but one thing at a time please!

Second, Capstone integration. This is my current task. The main reason why I initially gave up on alicedbg was the x86 decoder, and trust me, I kept overthinking how I can efficiently decode x86 up to AVX-512, but fuck that. Zydis and Capstone are much better options, so I’m doing the latter first. Unfortunately, Capstone v4 doesn’t support RISC-V, and v5, supporting RISC-V, is only at rc2.

And lastly, a memory scanner. With this, I think you can see what kind of project I’m making with Godot. I mean, hey, why not? 😈

No planned release dates because I know I hate those.

xxhdd

Look, I wanted XXHash3 support in ddh for a while now, so… After not hearing from the author in 4 months, I decided to fork the xxhash3 package and fix the range exception myself. Regarding licensing, I’m planning a major refactor, a rewrite (from scratch) will change that.

With that, I should be able to release a new version of ddh.

BLAKE3 and SM3 are just too difficult for me, and probably are for a lot of other people as well.

GitHub Portfolio

I’m thinking, maybe, to add an “Under considering” or “Considering closing” section for stuff that I’m considering hard to abandon.

No, no, I don’t want to give up on stuff that’s already under Active Projects. I do use some of them daily (ddh probably being my top 1), but for ddhx, I’ll have to ditch my efforts for a perfectly sane software architecture approach.

Future

To say the least, I have been taking life a little slower. As I did not code as much as I hoped, I have been watching a lot of shows as of late.

I’m hoping to get back into streaming development, even if a single person is watching me. Streaming games, while more entertaining, doesn’t really feel like it suits me.

And instead of monthly updates, I’ll likely switch to “whenever I feel like it” so in-between bimonthly and quarterly, otherwise monthly is a little spammy if I want to do other types of posts.

Anyway, you take care now.

Yasuna from Kill Me Baby looking away
“Literally me” as I would say