#💽Programming Chat v2
1 messages · Page 40 of 1
now for the specific example I provided, its not worth it to rewrite it that way
but say for
local function a(b, c, d, e)
if b then
print("b exists!")
if c then
print("c exists!")
if d then
print("d exists!")
end
end
end
end
-- can also be written as
local function a(b)
if not b then
return
end
print("b exists!")
if not c then
return
end
print("c exists!")
if not d then
return
end
print("d exists!")
end```
writting it like the latter reduces nesting
and makes it easier to read
get rid of the warns and prints unless they are for debugging
this is a personal preference, but I see a lot of people new to code they like to put warns and prints saying "X code is starting", "Y code is finished", "Z code is running", and personally I just think it clutters the output
define the function in 1 of the 2 ways
defining it usingfunction module.func()is just cleaner than putting it into the table directly
defining it as alocal function func()opens you up to some optimizations in the same file (like function inlining), and I think it looks nicer personally
simple is good complex is bad
I think everyone who writes code should read https://grugbrain.dev/, it's awesome advice and kinda funny too
53 248 - LOAD RBA
0x0000F600 - WHAT IT WANTS US TO LAOD
0x0000F600 - 53 248 = 9728
9728/512 = 19
2 sides * 80 tracks * 18 sectors
load: cyl # 0, sector # 1, head # 1
(load rba * logical block size) + (head# * 18) + (sector# - 1)
this math SUCKS
but it should hopefully work
`CHOMPY FUCKING CLUTCHED THAT SHIT!!!
tomorrow is the day i actually implement interrupts... or, well, today
but im going to sleep now
local GunObject: Gun = nil
GunObject = {
Name = PossibleTool.Name,
Handle = PossibleTool.PrimaryPart,
Ammo = config.Ammo.Value,
MaxAmmo = config.MaxAmmo.Value,
Reloading = false,
IsAutomatic = config.IsAutomatic.Value,
}
function module.Unequip(character: Model)
print("Unequipping gun")
local Player = Players:GetPlayerFromCharacter(character)
if Player and Player.PlayerGui then
local GUI = Player.PlayerGui:FindFirstChild("GunUI")
if GUI then
GUI.Container.WeaponName.Text = "No Weapon"
GUI.Container.Ammo.Text = "0 / 0"
GUI.Container.FireMode.Text = "N/A"
end
end
end
This is just a base idea of what I wanted to do, but how would I "reset" the GunObject
because when I try to do that,
A few changes that I wanted to mention yesterday but didn't
The way you've got this setup is kinda weird
Typically what I'd expect is a function that "makes" or "constructs" a gun "object", then methods on that "object" for actions, stuff like equip, fire, reload, etc...
You seem to have a singleton atm and I'm not sure that's really what you want
I.e., this is what I'd expect to see
local function fire(self: Gun)
end
return function()
return {
fire = fire
}
end
And usage would look like
local gun = require(path.to.gun)
local a_gun = gun()
a_gun:fire()```
okay its time to add interrupts
@lavish dove i rertact any statements ive made about bios
csm is pretty cool
oh no
Urghhhhhhhhh how do I make myself do work
start progamming
adding a real bios..
expert advice
I haven't heard this before
on the topic of advice im gonna shill https://grugbrain.dev/
definitely worth a read!
I have to do non programming homework
But me no wanna do it
LOL
Play War Thunder now with my links, and get a massive, free bonus pack including vehicles, boosters and more on PC and consoles: https://playwt.link/karljobst25 | Mobile: https://mwt.game/karljobst
In today's video I examine Elon's insane claim that he used to be one of the best Quake players in the world.
Thanks to anyone and everyone in my d...
new karl jobst video out
why do the people here set the ac to 79 F!!!!!!
they're weird
73-75 is the comfortable range
its not even that hot outside
whenever i set it to 72 F i get told off for "wasting energy"
my computer is on 24/7 my room will become 85 F if i dont turni t down 😭
3 mph wind? take cover
sounds like u need to vent ur pc to the outdoors
or just like idk open ur windows
that is very hot!!!
and that isnt a permanent solution since in a few months itll become 110 f
bro u live in texas it gets to like 100f+
okay and
i've lived in literally every other corner of the country, im not used to the heat anyways :Sob:
78f aint nothin
send in the 2nd winter storm
pls do
also send in 5 tons of rain
i will literally bring rain prayers back
how did that cripple your electricity grid
oh cause yall aren't connected to the rest of the nation
right
ERCOT connects to other grids for import/export through certain DC lines
so how did they fumble
generally though we're mostly self sufficient
a grid failure somewhere probably just took the whole thing down as they do
as they do
yes
tbf
i live right next to a gas plant and my power didnt drop
neither did our water supplies
i cant speak for anyone else though
so it does have its benefits
yeah
afaik it also doesn't cause people to get cancer
since it's got the latest safety stuff built in and they shut down their coal gens years ago
we also live near some solar/wind farms
gonna stream working on some of that imgui debugger thing for hopefully a little bit
whats ivt
interrupt vector table
like if a clock on the motherboard makes a tick, or a keyboard is pressed, in real mode an interrupt vector is looked up and jumped to the reference in memory
oh hm
the BIOS at startup on PCs makes some of these vectors either do nothing or jump to it's own hook/routine
so you can load your os into memory; when you're in protected mode these hooks are disabled, and the IVT no longer exists, an* IDT (protected mode ver of the ivt) is loaded by your os
some oses of yesteryear like MS-DOS redefined parts of the IVT as a form of syscall
cool
nvm I lied I have to do something else lol
😭
quick q
i've got a project i'm working on
backend made in express & stuff
what would be the reccomended path to frontend to someone that doesn't do frontend
currently thinking react + material ui lib
i just need something that has a component lib i can work with
and yes it has to be web based
react/material sounds fine
(since it has to run on shitty chinese smart boards)
what
genuine question
i just thought it would be more organised this way
each .js apart from the ones in util
Javascript? In this channel??
Oh I thought you got YOUR account banned
😭
Also, what does script.Parent[1] do? Does it coerce the 1 to a string then index a sibling of the script called 1??
it was some account that was creating a ton of bloat issues to advertise stuff/executables
Classic
I tried to get an answer in general but got hated on instead loool
yknow what im not actually sure. im pretty sure it'll just give you a warning/error (pair)
See I thought so too. If it coerces into a string that'd be cursed
Oh no. It does.
😭
LOL
Doing that coerce probably makes it fallback to slow __index call
Instead of fast pathing it
Do the frontend yourself otherwise you won’t learn
ok me
I don't plan on doing webdev
Win!
I do not want to become 45 until I center a div properly
thx for reminding me about a stupid post i saw earlier today
Let them have their fantasies
i can't if they already exist though
web 1.0 still exists: it's called just writing an html file yourself and using http/1.1 😭
or hell http/0.9 since thats supported
I said so
go back to your luau cage
Stop i write other language too
I DONT USE LUA!
You'd get banned from that one server if you said this
okay isnt that server also full of rust users though
Yea..
No you gotta start shilling it
😨
hey random thought. if you're ever bored, start lowballing people on facebook marketplace
how
oh lmao
How😭
IT IS TIME...
to redo a large amount of my decoder logic
the entire left hand side of ModR/M has been misunderstood this entire time
replace rust with ada
Ada*
he looks like he could be an ada programmer too
have to put my thinking cap on
rev 5 instrruction format is nice ... but i have to fix 800 errors caused by switching to it..
immediate eight!! NOW!!
added some things here and there
firing logic is almost done
now i just have to add the local bullet stuff
HOYL SHIT
worst news release ever
based
not
Yes
which means its at the top cause of wraparound
💪
anyways my cpu still has 432 errors... is hould get back to fixing it
nah
if you have a circular array of length 10, array[9] (ada) !== array[0] (rust)
okay, but why would you use a circular array for scoring
well u said wraparound
cause the score in my model would be attributed to the lang itself
and id use modular arithmetic..
there would be if you were sorting them in a list
you just get rust.score > ada.score
and happened to modify the score below 'Min
Fine
oh yeah... i also need to write my own bootloader :<
drop the ()s
BUT...
i think you mean Score'Min 🤓
and no its 'Max..
wait no im an idiot its 'First and 'Last 😭
Nah it’s 0
mmmmmaybe get a better lang idk
no
like rust :3
okay ill give you a question
how would i easily define a fixed point dec in rust with min/max functions
with a crate
whhhyyy would i need a crate to do that
cause f32 and f64 are floating
and you can't make your own numerical types, can you?
who needs custom numerical types
literally everyone
Nuh uh
Tell me one time a u8/16/32/64/128 wouldn’t have done what you needed it to do
ALIRE CALLS THEM THE SAME THING
why would you ever need a u24…
because many formats love using 3-byte sized ints
YOU STOLE THE NAME
(unfortunately jvm langs dont have custom unsigneds...)
(so stuff like kotlin makes unsigned crap a bit woozy)
my x86 cpu gets around this by doing a lot of its math in longs and then truncating them when setting values
lol
nothing will change because of this
maybe unfortunately
maybe fortunately for you atp
fym maybe foruntrately..
LOL cause if anything changed, it'd prob include replacing ada with rust
NO
stuff in c will stay in c, stuff in cpp will stay in cpp, stuff in ada will... probably stay in ada
and thats cause the code itself is literally certified to not do x 😭
I certified my c code to not do x
beware of bugs in the above code, I have only proven it correct, not tested it
yeah your c code should hopefully be written with c, not xcode
just you wait
well..
assuming the code was formally proved in some way to not do something
then no testing is required
you know it won't ever do that thing
my code was formally proved to be bug free but still had many bugs
how do you explain that
where was your code
it was
in places
it converted 30 rotations to degrees then passed that number into a field that expected radians
cause testing/formal proof means nothing if you do:
- introspection
- radiation
something like 10k radians
sounds like your code was just not written right
the actual conversion wanted was degrees to radians lol
but I proved it
you can prove anything
I gave it a ✅
remember
reviewer said LGTM
3.1415 = 3
i love pasting giant strings of pi into my code even though the type its held in doesnt have that precision
<3
i hate the food pie
oh they made a new channel #premium-cave-of-makers
boring
we already had that
its called #1264496483957346346
goats
"oh I can make music"
"how do you make music"
"I open fl studio"
"how did they make fl studio"
"they wrote code"
its all code
are you serious or j right nwo..
"oh I can make models"
"how do you make models"
"I open blender"
"how did they make blender"
"they wrote code"
its all code
dead serious I got not a clue what that is
okay so
isas (instruction set architectures) have two "variants" to how they're written
oh, risc is just newer
well thats not true
CISC ISAs make a whole bunch of instructions to do big things in a single instruction
for example you can ADD from a memory location to another memory location
RISC ISAs make a bunch of little insturctions to do little things per instruction
so, GET from 2 memory locations
The simplest way to examine the advantages and disadvantages of RISC architecture is by contrasting it with it's predecessor: CISC
put them in two registers
add the two registers
PUT it somewhere
thats a tiny little risc
examples of RISC... ARM, RISC-V
examples of CISC... x86, whatever IBM is doing
these mattered when designing cpus a long while ago but
generally they're irrelevant today because CPUs don't really care about ISAs. it's all microcode now
but i still see people hate on x86 just cause its cisc
theres a good article here about why its just become irrelevant: https://chipsandcheese.com/p/why-x86-doesnt-need-to-die
chronologically risc cpus might've become more popular than cisc cpus
but they aren't a replacement to them in any way
but why does it matter
why does what matter
if you do a lot in an instruction, don't it end up being many small instruction anyway
well again it used to matter when designing the cpu
like, if cisc wants to do something, it ends up having to do what risc does in each instruction anyway right
but now the cpu just turns whatever you're doing, risc or cisc, into specialized microcode for the operation
RISC ISAs may also do multiple things per op just an fyi
the term has become watered down, especially with what ARMs doing
another definition for what a risc isa might do is "all the instructions must be fixed length"
oh ok
in x86, a cisc, an instruction could be one byte long, two bytes for a modrm (register/memoy location), a displacement...
im gonna put a disclaimer here and say i'm not like, engineer-level experienced with each of the two
so i might've gotten things mixed up, but that's just what i've put together so far
maroww
i kinda just wanna like
write raw machine code for a project one day 😭
it's honestly not that daunting when you've got a manual (or multiple for file formats)
not scary tbh
yeah
i might just rig our ISO9660 reader to be able to write ISO files and work off that
fun getMemRM(
mod: UInt, rm: UInt, regRMType: RegisterType,
operandLength: AddressingLength
): MemRM = when (mod) {
0b00u, 0b01u, 0b10u -> {
val memRm = when (this.processor.operandSize) {
AddressingLength.R32 -> when (rm) {
0b000u -> this.processor.a.ex
0b001u -> this.processor.c.ex
0b010u -> this.processor.d.ex
0b011u -> this.processor.b.ex
0b100u -> this.decodeSIB()
0b101u -> this.readBinaryFetch(4).toULong()
0b110u -> this.processor.si.ex
0b111u -> this.processor.di.ex
else -> throw IllegalArgumentException(hex(rm))
} + when (mod) {
0b00u -> 0u
0b01u -> this.readFetch().toULong()
0b10u -> this.readBinaryFetch(4).toULong()
else -> throw IllegalArgumentException(hex(mod))
}
AddressingLength.R16 -> when (rm) {
0b000u -> this.processor.b.x + this.processor.si.x
0b001u -> this.processor.b.x + this.processor.di.x
0b010u -> this.processor.bp.x + this.processor.si.x
0b011u -> this.processor.bp.x + this.processor.di.x
0b100u -> this.processor.si.x
0b101u -> this.processor.di.x
0b110u -> when (mod) {
0b00u -> this.readBinaryFetch(2).toULong()
else -> this.processor.bp.x
}
0b111u -> this.processor.b.x
else -> throw IllegalArgumentException(hex(rm))
} + when (mod) {
0b00u -> 0u
0b01u -> this.readFetch().toULong()
0b10u -> this.readBinaryFetch(2).toULong()
else -> throw IllegalArgumentException(hex(mod))
}
else -> throw UnsupportedOperationException()
}
MemRM(null, memRm)
}
0b11u -> MemRM(this.getRegRM(rm, regRMType, operandLength), null)
else -> throw IllegalArgumentException("Bad mod: ${hex(mod)}")
}
decoder v2
actually fits on one page now
huge
cause theres no scissoring and its just writing to a text buffer
implement vga rahh
unfortunately we are forced to when we make the move for server compat
as replicating the entire contents of memory wont be feasible
only video ram
that is the goal
the thing writing the disk error message is MS-DOS 6.22's boot loader
damn
Neat!
btw the screen in that video is totally messedu p
the actual screen is on the bottom of the box and teh cropping is one pixel off
but we fixed that ...
now i just gotta fix why my branch is breaking ...
making a cpu is hard
codeveloper is working (later today) on making our keyboard not sink all inputs from the player...
and to actually use our keyboard block that hasn't been touched in over a year...
but it'll also be his first time touching the processor/bios so that'll be fun
Woah
looks like it
they're growing human brains in a computer
looks like this is the first "wetware as a service"
I remember reading that they were getting close a few years ago
lmfao its so long
look at how long it is lma
codev made the computer work
(the asm its running)
i am happy to announce,..
our computers have real VRAM in them!! (now)
IT WORKS
but look at it 🥺 we have real vram ...
also the assembly its running
(the trash on screen is a directory from the CD)
Now add working TCP
we can't add that until we know what it looks like (i.e. until something like MS-DOS fucks around and finds out)
yknow
you could probably already make ascii art on this thing
40x25
what does this mean lmao
there’s plenty of working TCP everywhere
"add working tcp" means absolutely nothing when we're at the processor level
the cpu doesn't know or care about that stuff
oh right..
if ms-dos tried writing to an IO port or PCIe pertenient to TCP
add uh
then we would know where to start
working peripheral interface to a simulated NIC
that'll come after we can get a serious os booted
our bootloader isnt insanely complex so it's essentially just a test case rn
also btw
the computer shouldnt be running as well as it does honestly
it runs 40x25 drawText functions every frames
also no ada running on it yet
just c and asm ...
codev and i have been talking about bringing back the BASIC casette if an os isnt found like IBM used to do though
(except instead of BASIC its a lua shell)
YOOOOOO IT WORKS
i wrote a tiny bios for ascii art
lemme recrod
see if you can recognize it..
@timid quartz
I GOT ADA RUNNING ON IT
this is so fun
Ewwwww
i could get "rust" on it...
just need a 40x25 ascii art
working on how to address this effectively in asm rn though
Oh you didn’t actually get Ada running on it
barely why
i've really only heard of dvorak
that sounds weird to type in though
ill stick with my typewriter..
Colemak-DH looks nice but my friend uses that
so maybe either programmer dvorak or workman
trying to pick stuff that’s easily available
unlike qwerty, dvorak is not named by the first 6 letters from the left on the top row
If it was it would be named uh
',.pyf
it still looks weird to type in
if you dont have carpal tunnel you're just not good enough
m,m,,m
decisions decisions
REPNE CMPS looks promising
REPNE SCAS..?
😭
They don't work on that
That's just a new feature of the library they use for it
and they haven't bumped the version of that library in years iirc
I remember being annoyed about that because luau syntax highlighting was pr'ed into that library a long while ago but discord hasn't bumped in ages
we love discord
lmao avg discord moment
awesome
dont even think about merging this half baked intellelectually bankrupt garbage
I gotta drop that on a review for a pr sometime
can these theoretically run a full fledged iso
wdym
like could i run an os
cause the test samples we're running on it rn are isos
not stable enough
so could you run that proxmox iso i gave you
it gets quite far though
oh
probably not for a few more months
since id assume that iso uses like
actual VGA
and doesn't rely on the textmode at the start of launch
this looks like computercraft but if it actually did cool shit
or whatever its called
opencomputers/computercraft yeah
yeah
those two are lua interpreters (in another way roblox scripts)
not like the mod is bad its just
you kn
yeah
you need to know how to code in lua
and it kinda made me initally think it was like vm computers
but no its just lua stuff
opencomputers II had a risc cpu which could run linux, but it kinda died (and RISC-V isn't as capable as x86, at least compat wise)
but if you know how to code in lua you can make some pretty cool base shit
oh yeah
what mc version is breadmod
1.12 or
1.21
example of a test sample rn
we had a fabric/forge dual port using architectury on 1.20, but fabric is simply just lacking some of the stuff neoforge has
it makes some processes we do a lot harder with little documentation
ah
maybe in the future we'll try again idk
is that the michelin tire company
we have plans for a BreadLib to allow us to porrt to minecraft versions easier, but that'll require mega work on how the loaders work
this video will answer all your questions
if only there was like
a wine equivlent for forge to fabric shit
i think there is one but its very
messy and unstable
well there was a fabric-based loader that tried iirc called Patchwork
they died
i think theres a fabric to forge compat mod though lemme try and find it
and there arent any fabric ports from my knowledge
is this fabric to neo or neo to fabric
fabric to neo
is there one in reverse
dont think so
aw why not
it runs like garbage compared to fabric and i would generally rather use fabirc
What does this have to do with bread
it does
Where bread
woa
anyways now i gotta make it actually go into protected mode and make the gdt and stuff ..
lol
whats your secret to storing atp I want to be awake all day and night
telnet/netcat on top..
not encrypted 👎
yeah well
the current government is NOT us.
anyways
windows is such a good os
Introduction Today, Microsoft released their latest Patch Tuesday. This Patch includes a fix for vulnerability CVE-2015-0057, an IMPORTANT-rated exploitable vulnerability which we responsibly disclosed to Microsoft a few months ago. As part of our research, we revealed this... Read More
(bypassing protection using an exploit in kernel-managed scrollbar code)
@pastel tinsel 
honestly thinking bout making our own Bread Mod Compiler
isn't a big deal
you haven't looked into it
thats ruight
holy assembly language
neat
specifically reading this off
colemak-dh
hm
@spare quartz you know you wanna sink time into learning another keyboard layout
no i wanna sink more time into learning japanese
had a bad idea about moving my bootloader backwards in memory instead of loading more data
okay BUT
if i set my password in japanese
then nobody could log in for eternity
easy
もにに
like who'd ever guess that
do you know about the funny thing where boot code is mapped in two places
wdym
also gonna be running some tests on the sections (idk if they're really needed for kernel loading)
after this i think it's just jmping to the load address
smh
it just goes to the bios hook at F000:FFF0
lame
no
not an accurate or complete simulation
thats what real x86 does
we just don't have to care about uefi for now
i still like our BIOS design though
So your cpu basically bypasses this
no
ok confused
it's just for ease of BIOS hooking only the first 20 bits are considered like how the original PCs did it
upper 32 bits are not
F000:FFF0 is
when protected mode is entered the bios hooking apparatus is effectively disabled
(since the bios never existed there in our computer, it just turns into empty memory for the host)
I like how elf looked so scary then I made a linker script and its just reading one thing from a table (as long as u have the thing)
well it is scary when you have to consider all parts of what it can do
but for kernel loading we just load in the segments where it tells us to and jump to it
(afaik)
my bootloader code currently uses 80% of the 512 byte limit
considering it can render splash text, has error messages, basic user input
i think thats pretty okay
Nuh uh that’s 000F:0000
no
wait yes
too bad
host doesn't need to know our bios isnt real
(until it gets to reading the (E)BDA though, we have to poison those addresses cause theres no data there...)
FFF0:F000 is in here
okay i made a mistake :<
our bios hook is THERE
(even though again that memory address isnt real for us)
mmmm i think this is correct for rep movsd
si/di.x not .ex...
Well it’s a real address until you enable virtual memory
Just the data is garbage
wait yeah cause you’re in real mode
and you have to enable protected mode to get the entire 32-bit address space
we're only feeding the computer 1.5 MiB rn,,,
any attempts to requestMemoryAt beyond 1.5 MiB will cause the computer to implode
how r u gonna write an OS in 1.5mb
hmm.. is this correct..?
Sorry mb not kb
our kernel fits in that
microsoft
well ur kernel basically does nothing so makes sense
:<
i commented out like 99% of the real kernel code cause it checks ACPI and serial ports n stuff
ACPI doesn’t exist
that also means we have to write our own AML ☹️
ACPI machine language
naaah
feed your computer like 1gb and let me load the OS I’m working on onto it
is your kernel 32-bit
yes of course
this os has a custom bootloader
Nuh uh
does yours fit in 512 bytes and only has one stage
mmm it’s two stages
there’s a tiny bit of assembly that enables protected mode and then calls a C function
i kinda sucked at x86 before this cpu project
i think its made me an intermediate level just by working with it
inferior Intel syntax
at&t syntax should've died when it was made
you’re just jealous of orb
dumbass we're on the same ISA
NASM literally wont let me compile if i dont use the b/w/d/q suffix on some instructions
this is the OS
you can read it
we're probably gonna make a risc-v sim (rev2) after we can run DOOM on ours
mainly for the purposes of beating OC II for dying
wdym
idk
if you want you can take a copy of the 1.21.1-neoforge branch on intellij, and test it out on some ISOs
it's got an integrated disassembler for debugging
☹️
im still proud of the disassembler we have btw
its stupid simple yet effective
beats out GDB's crap one by a long shot too
(mainly cause it actually knows the operand length of instructions...)
I will not stand for gdb hate
GDB is so shit
gdb carries my ass through every os project
cause it's the only viable tool
for me it just LOVES segfaulting and forcing me to get my breakpoints back
skill issue
and the assembly view is ass, it can't read beyond one instruction in real mode
and it completely blows up on interrupts
idk I hate organizing code
and thinking of where everything should go
and just like idk
when it comes to writing code it's kinda laborious
idk it's kinda just like english for me
and then all this stuff you're doing is quite advanced
oh I mean I can defintely think in code and whatever
it's just large-scale organization and jazz
we kinda get around large scale org by
introspection everywhere we can
no instructions in the cpu are actually organized anywhere aside from just being inside an "impl" folder and annotated IA32Instruction(opcode)
cuh
also I feel like
i think its pretty good
... well that is kinda what we are we doing, is it not?
stuff like QEMU does crap like "TCG" where it can compile stuff to the hosts architecture
or JIT
we just read off the instruction stream and do as we're told
writing instructions is simple even if you might think it'd be complex
oops, that has to be converted to a UShort first
i dont know how it'd be any other way
if by interpreter you mean something that just runs these instruictions but w/o the computer/processor/io backing, it's not really a simulation of x86 at all
its more like a fucked up disassembler in that regard
and again it's not
conceptually it might appear to be, and as a whole it is
but you don't think about these things as a whole
the way the CPU rn is built is just taking a reference sample (QEMU), and adjusting it to line up with QEMUs results
- we run into invalid instruction errors
- we add the instructions
- we run into subtle memory corruption errors
- we revise the probemlatic instructions and consult intels manuals on the operation of that instruction
- we run into an even more subtler quirk of x86's operation like GDTs
- we step in QEMU and see what happens there, and compare it to the processor
i say we as if my codev is working on it, but he does peripheral work, not processor work...
(the only time this is not the case is during an instruction format revision, which i hope i dont do again, cause the last one took me 2 full days at 160 instructions, and we're now at ~215)
i think i rambled
I mean
im in an os class rn
and it kinda is
idk if I could have written this entire thing from scratch
you probably could have with enough time
cause i've been working on this for a solid month as if it were my job
and it's ultimately the 3rd attempt at me trying to sim an ISA
Yeh I made a linker script that puts everything in the one segment
woah I just found out
putting data in the unused bits of a pointer is officially supported
its called pointer tagging apparently
Huh neat
Lots of potential for that with 64-bit virtual addresses
Cause in a 64-bit virtual address only 48 bits actually matter
In a 32-bit virtual address you’d have to be clever because all the bits are technically used
But in an ideal world everything is 4-aligned meaning you have 2 bits in the offset to work with
Direct memory access 
everything looks fine so idk why its complaining
im reading 0x25 blocks at position 0x24
fixed
Could it be you have a virtual-physical address mismatch?
there is no mmu set
…your bootloader will get paging…
based
everyone knows microkernels are the actual only good design
Your microkernel when a system process is still depended on by tons of user space processes and still crashes leaving your user space unusable (at least the kernel didn’t panic!!)
system process == server in my thing up there
❌
wdym ❌
a server runs in user space
You can’t tell me what I meant to say
yes i can
"system process" "user space process"
"user space process" depended on by tons of "user space process"
You still haven’t solved the problem of your user space dying if one of your servers goes offline
that kinda just sounds like an ISOLATED problem
thats why we can restart them
ez
try doing that with a kernel driver
Ok what if your file system server dies and you can’t reload it from disk :3
hmmmmm
simple
we dont let that happen
😁
(you have a fallback on the kernel for raw disk access)
besides I’ll be waiting on your microkernel to do 5 billion context switches + process preemptions as all the servers talk while my monolithic kernel takes care of everything



