corinne has quit [Remote host closed the connection]
corinne has joined #osdev
karenw has quit [Ping timeout: 260 seconds]
edr has quit [Quit: Leaving]
jcea has quit [Ping timeout: 252 seconds]
marr-ales-fios has joined #osdev
marr-ales-fios has quit [Client Quit]
antranigv_ has joined #osdev
antranigv has quit [Ping timeout: 252 seconds]
pabs3 has quit [Ping timeout: 248 seconds]
pabs3 has joined #osdev
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
parabirb has quit [Quit: WeeChat 4.1.1]
parabirb has joined #osdev
eluks has quit [Remote host closed the connection]
eluks has joined #osdev
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
MarchHare has joined #osdev
MarchHare has quit [Ping timeout: 244 seconds]
Lucretia has joined #osdev
<pie_>
anyone know anything on or about how to write a custom gdb architecture?
goliath has joined #osdev
<geist>
hmmm, dunno. that's probably a fairly large amount of work
<clever>
pie_: one project i'm working on is a powerpc emulator, and having gdb built into it would be nice, so ive been looking into that
<clever>
another project i need to resume is the rpi/VPU stuff, nothing is known about the jtag, but having a software gdb stub would be useful, but thats even more work, because gdb has zero support for the VPU, and there is the problem of recovering from every failure, enough to do serial comms
GeDaMo has joined #osdev
slow99 has joined #osdev
<heat>
beware
<heat>
gdb is spaghetti code
<heat>
(IIRC lldb is better but not by much)
<nikolar>
heat: sure, but if you only deal with a gdb stub, you don't have to care
<nikolar>
right?
<clever>
heat: for my ppc plans, yeah, i just have to deal with the gdb protocol and providing control of the emulator, but for the VPU project, its an entirely unsupported ISA/arch
<clever>
nikolar: oops, ^
<nikolar>
ah right
<pie_>
clever: hi <3 :D
<pie_>
ive made a bit of progress
<pie_>
gdb seems to reqire more than nothing to start
<pie_>
it seems like the radare2 codebase is ass but it seems more amenable to starting with the basics
<pie_>
i realized the gdbserver protocol might have other frontends
<pie_>
radare supports it, and they also seem to parse the xml returned by the gdbserver with metadata, though i havent gotten that far yet
<pie_>
i _just_ got memory browsing working by enabling the qemu gdbservers physical memory mode
<bslsk05>
chipsandcheese.com: Chips and Cheese | Substack
<nikolar>
it's got pretty good analyses and benchmarks of various microarchitectural implementations
<heat>
it seems that the rpi 5's a76 roughly corresponds to a samsung chipset from 2020
<heat>
so they're a few years back
<nikolar>
it's not even *that* efficient as far as arm socs go
<heat>
which one?
Turn_Left has joined #osdev
<nikolar>
all of raspis
<n00by_>
what do yall think about the cool kids who implement a custom riscv OOO core on an fpga and try to learn more about cpus that way, is it worth it?
<nikolar>
i mean sure, if you find it worth it
<n00by_>
:)
<heat>
yeah nikolar the rpi 5 is HIGH PERFORMAN
<heat>
it even needs a freaking fan
<nikolar>
it's so HIGH PERFORMAN that it got cut off
<heat>
hm?
Left_Turn has quit [Ping timeout: 252 seconds]
<n00by_>
orange pi is more expensive though, found lot of netbsd shills using orange pis
<heat>
did they throttle it or something?
<nikolar>
(the CE got cutt off from HIGH PERFORMAN)
<heat>
yes
<heat>
big letter word too slow to say
<heat>
honestly 2020 mid range phone is kinda fast enough
<heat>
for most things
<nikolar>
i agree
<heat>
would i like a 96x ampere machine? i mean yeah if you insist i'll take it
<nikolar>
like what do people even do on phones generally
<nikolar>
scroll video/photo feeds and browsers
<n00by_>
cant do anything interesting unless the bootloader is unlocked :(
<n00by_>
and a way to flash the stock firmware
<nikolar>
well, search for phones where you can unlock the bootloader then
<n00by_>
pixels, what else
<heat>
new android is supporting VMs
<n00by_>
lol
<heat>
you can also unlock the bootloader on samsung
<nikolar>
and xiaomis
<nikolar>
(you need to wait a month though)
<the_oz>
I need a low power thing to shut down entire rack for when smol mode
<nikolar>
heat: what's the justifictaion for adding vms
<heat>
i don't know, i'm not a google product manager
<the_oz>
right now I leave my "desktop" running all night and I shouldn't
<heat>
they're adding linux terminals with actual debian
<heat>
running under KVM I assume
<n00by_>
the_oz: thats literally how i use irc, no bouncers lol
<the_oz>
which is temporarily a proliant g6 360
<nikolar>
oh did upstream android get some desktop type of ui thing recently
<the_oz>
which is not great
<nikolar>
is that why they care about normal linux now
<heat>
no and no?
pbase has quit [Ping timeout: 260 seconds]
<heat>
wdym normal linux
<nikolar>
debian vms like you said
<heat>
kernel-wise google is upstream first
<heat>
has been for like, 10 years maybe, maybe even more
<n00by_>
is it true that arm has special instruction to support native javascript
<heat>
no
<nikolar>
the instruction in question is some float conversion thing
<nikolar>
and it's an extension iirc
<n00by_>
ye
<n00by_>
that
<heat>
that sort of stuff is routine
<heat>
customers ask for features, ARM/Intel/AMD give them
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 245 seconds]
goliath has quit [Quit: SIGSEGV]
<nortti>
aiui it's basically a "do it like x86 does", and the javascript connection is that ecma standardized existing practice which happened to be whatever the browsers were doing, running on x86 systems
edr has joined #osdev
<nikolar>
it's still funny that it's got js in the instruction thuogh lol
<nikolar>
> FJCVTZS is "Floating-point Javascript Convert to Signed fixed-point, rounding toward Zero".
<heat>
what was the problem with broadwell and the next line prefetcher
<heat>
that made it so crap for broadwell?
<n00by_>
GeDaMo: i do, hes AWESOME <3
<n00by_>
one of my favorite blogs on the planet
<n00by_>
real shit
<nikolar>
can't wait for him to get to the pentiums
<nikolar>
:P
Left_Turn has quit [Read error: Connection reset by peer]
* n00by_
knows GeDaMo is always a source of goldmines and authoritative material :P
<GeDaMo>
:P
Left_Turn has joined #osdev
<mjg>
heat: i don't know what they do specifically, i do know it results in tons more traffic in a numa setting
<mjg>
broadwell is an obsolete yeller anyway, what brought this up again
<heat>
thanks big mofer
<heat>
nothing in particular, we were discussing micro-architectural details here
<heat>
and how things were super duper complex
<heat>
and i remembered the per-vma next line prefetching incident
<mjg>
read some material by agner fog
<mjg>
it's all bullshit problems
<mjg>
i think the most iluminating statement was by jim keller, who said when a new uarch is being worked on the sales people want a guarantee it will be faster at everything than the old stuff
<mjg>
... and that this can't be guaranteed
<nikolar>
obviously
<nikolar>
sales people just suck
<mjg>
not very obviously, it used to be that new uarch == turbo faster
<mjg>
but this might have ended roughly when you were born
<n00by_>
lol
<n00by_>
agner is decent though, cant expect too much. he does archaeology for a living so
<nikolar>
yeah but that hasn't been the case for decades so yeah
<nikolar>
obviously
<nikolar>
n00by_: i'll tell you a little secret, but most programmers who work on open source software don't do it as a job
<heat>
well
<heat>
it depends
<heat>
the vast majority of people working on the linux kernel, gcc, llvm, glibc are all being paid to do so
<mjg>
given the quality of the work they should be paying to include their changes
<n00by_>
nikolar: there was a guy who used to do a lot of defcon and blackhat talks on x86 internals, domas im sure you know. he became quiet after intel hired him
pabs3 has quit [Quit: Don't rest until all the world is paved in moss and greenery.]
pabs3 has joined #osdev
gog has quit [Quit: K-Lined]
pog has joined #osdev
the_oz has joined #osdev
pbase has joined #osdev
pbase has quit [Quit: Leaving]
jcea has quit [Ping timeout: 252 seconds]
<n00by_>
is most of osdeving adhering to posix (just enough) so we can port the exiting tools? are there examples of systems where they wrote everything from ground zero? silly example is templeOS but it's cute though
<n00by_>
existing*
<sortie>
n00by_: Totally up to you. Lots of people have done different roads. The POSIX road is great if you want to port existing programs. The custom road has also been done, but it becomes difficult as you have to write all programs yourself, or maybe end up with a POSIX compatibility layer
<sortie>
n00by_: It's worth having a look at https://wiki.osdev.org/Notable_Projects to study some of the existing notable osdev projects and how they went in different directions
<bslsk05>
wiki.osdev.org: Notable Projects - OSDev Wiki
<n00by_>
thanks sortie :)
<heat>
POSIX is good if you want something useful
<heat>
!POSIX is good if you want something different
<sortie>
I originally went with something else than POSIX in Sortix, but I realized that my custom API was not better than POSIX, and I deleted it and went POSIX instead
<sortie>
Unless you're an expert in POSIX and the Windows API and such, you're probably not experienced enough to invent something better :) Which is absolutely possible, btw, just that almost everyone don't know enough to not design something full of leaky abstractions
<sortie>
BUT it's valid and fun to just invent your custom API anyway
j00ru has joined #osdev
<n00by_>
heat, the "different and useful" combination does seem like it's rare to find, yeh
<n00by_>
sortie: appreciate the lead!
<nikolar>
if you want to be different, implement win32 api :P
<nikolar>
no one other than microsoft is doing that lol
<sortie>
doctors do not recommend implementing HWND
<sortie>
BOOL STATUS __lpcstr
<n00by_>
hey, at least they made big bucks out of it :P
<sortie>
OH NO DWORD __it__ LPCSTR WinMain got ME hep
<sortie>
DWORD HELP;
<n00by_>
lol
<sortie>
__cdecl
<n00by_>
(plan9 is not posix, crazy exception and apparently a notable one)
<n00by_>
they do have the compatibility layer like sortie said
<nikolar>
everyone is posix or posix compatible
<n00by_>
heh
<nikolar>
even microsoft gave up and embedded a linux kernel
<sortie>
Plan 9 is very interesting. It was invented by the inventors of Unix, so they had a lot of experience, and the ability to think of something radically different
<nikolar>
sortie: more like taking unix to the extreme lol
<sortie>
Plan 9 has a lot of great ideas but ultimately it got fairly weird and incompatible for questionable reasons
<n00by_>
nikolar: are ken and dennis the godfathers of posix?
<nikolar>
you could say that i guess
<sortie>
Fathers would be accurate
<n00by_>
ye, my bad
<nikolar>
sortie: of posix?
<sortie>
The guys came up with Unix, which evolved a lot over the decades, and POSIX became a standard that describes what Unix is
<nikolar>
how involved were they
<sortie>
I honestly don't know, nikolar, but my gut feeling is not-very-much
<nikolar>
yea same
<sortie>
At that point Unix had become very corporate and they were more doing Plan 9
<nikolar>
so i guess godfathers is more appropriate after all :P
<sortie>
A different generation had taken over Unix at that point
<sortie>
Well, they basically came up with a lot of what the core standard describes
<n00by_>
nikolar: which body governs posix? is it like c++?
<nikolar>
what do you mean like c++
<n00by_>
working group X
<nikolar>
something like that
<zid>
is there a setof people? yes
<sortie>
n00by_: The Open Group and the Austin Group. It's an IEEE standard. You can look it up on wikipedia :P
<sortie>
UTF-8 is the one and only encoding, thank you very much. It's UTF-8 until proven otherwise. End of story.
<n00by_>
lol
<nikolar>
indeed
<zid>
So yea, the 'markup' part of HTML has been completely removed from it, in practical usage
<heat>
utf-16 ftw
<n00by_>
utf-8 is also divine
<heat>
uh oh
<zid>
so you can no longer say, search for all text in a document that is bold
<zid>
because there are no longer bold tags, random words are now in a div, with a bunch of computed style info
<nikolar>
heat: was nice knowing you
<zid>
as a very simple example
<sortie>
heat: Your encoding sedition has been noted. Your punishment is the BOM in the endian of your choosing. Please pick a surrogate.
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
<n00by_>
LOL
<n00by_>
i like that
<zid>
heat can you at least not use wtf-16
<n00by_>
heh
<sortie>
I implemented UTF-16 the other day for FAT
<nikolar>
wait, did i start this by suggesting win32
<nikolar>
dang
<sortie>
UTF-16 is the worst encoding. Not every codepoint is one code unit, and it's not backwards compatible with ASCII. UTF-32 has one codepoint per code unit. UTF-8 is backwards compatible with ASCII.
<nikolar>
indeed
<heat>
yes
<zid>
WTF-16 is gooder
<heat>
but it's also the funniest encoding
<sortie>
Like, UTF-16 gets you the worst of both worlds, because you have to handle surrogate pairs, which SO many people don't even know about
<heat>
when in doubt, pick the funny
<sortie>
Oh and you get endian issues too
<heat>
notabug, use little endian
<n00by_>
is wtf16 a real encoding? o_O
<heat>
not really
<heat>
it's a fucked-up utf-16 that the windows kernel accepts
<zid>
It's what you get if you handle utf-16 how windows does
<bslsk05>
github.com: live-bootstrap/parts.rst at master · fosslinux/live-bootstrap · GitHub
<n00by_>
O_o
<sortix>
It's absolutely insane but they found a reasonable path that lets them bootstrap much of the modern Linux world
<n00by_>
pure fucking black magic
<n00by_>
wow
<nikolar>
sortix: what do you mean much
<sortix>
All from source code, tracing back to just one binary boot sector, that one is able to audit
<nikolar>
once you get to a modern gcc, you've bootstrapped everything
<sortix>
nikolar: Rust, Java, Haskell, and other languages are nightmares to bootstrap
<zid>
once you get to gcc 4 you're finished, and someone is porting gcc4 to tinycc
<nikolar>
sure
<nikolar>
zid: oh is that so
sortix is now known as sortie
<zid>
gcc4 can build gcc8 and then that can build everything else, atm
<zid>
otherwise you need to do a gcc 1.2 or whatever step it was
<sortie>
nikolar: You can discount and ignore all of those new languages, saying C++ Linux world is fine and it is, but well -- it's forcing its way into the ecosystem big time, even though the bootstrap stories are not ready. But #bootstrapable is working hard on all of this
<zid>
(gcc 4.3 or whatever added C++, causing the break)
<sortie>
Lack of bootstrap story is a big reason why I don't have Rust on Sortix
<n00by_>
so hex0 is like a self hosted assembler done in machine code
<zid>
sortie: My hope is that all the bullshit stays downstream and stops working itself upstream
<nikolar>
sounds like a feature to me sortie
<zid>
but I live in fantasy land
<zid>
can't wait to need rust to use binutils
<sortie>
nikolar: They keep adding Rust into the kernel..
<nikolar>
and keep failing mostly
<zid>
there's an driver!
<zid>
I do think the hissy fit the mm guy had was funny though
<sortie>
I'm just saying. We better hope there's a bootstrap of these languages that works, because they keep forcing themselves into everything
<nikolar>
zid: you mean the one that already had a c driver
<zid>
yea that one
<nikolar>
that was like 200 lines of c or something
<zid>
it's now 400 lines of unsafe in rust, thankfully
<heat>
zid: you mean the dma stuff?
<nikolar>
sortie: how about we just don't let them force thetmselves where they shouldn't be
<heat>
hellwig is not an MM guy
<zid>
right kernel/dma not kernel/mm
<zid>
oh he got booted, rip that guy
<heat>
he didn't get booted
<zid>
he did
<zid>
there's literally a patch removing him from it
<heat>
sent by him
<zid>
he's now 'random nvme driver maintainer' not dma maintainer
<heat>
as part of the hissy fit
<nortti>
sortie: aiui both java and rust have a bootstrap chain that's "reasonable", haskell and c# are the really bad ones atm
<heat>
he still maintains a shit ton of stuff and is one of the main block subsystem guys
<heat>
and xfs
<sortie>
nortti: more like 'possible' than 'reasonable' but yeah
<bslsk05>
thepowersgang/mrustc - Alternative rust compiler (re-implementation) (118 forks/2313 stargazers/MIT)
<heat>
zid: where?
<zid>
The link above
<zid>
one line above
<zid>
where I pasted the link then gave commentary on it
<heat>
i skimmed it and didn't find anything
<zid>
it's linus telling him he's wrong and that it isn't how being a maintainer works
<heat>
right
<nortti>
nikolar: what I mean by "reasonable" is that once you do the mrustc step, you can just run the normal build using upstream tarballs, no need to muck around with weird patched forks like the gcc-from-tcc or mono bootstraps
<nikolar>
well i don't think "reasonable" means building every version since but sure
<zid>
reasonable if you have an 8TB hard drive
<nortti>
the more I look into bootstrapping, the more it seems like the natural state of a programming language implementation is "fucking pain to bootstrap"
<nikolar>
zid: oh no, hard drives are too slow for that
<bslsk05>
gitlab.gnome.org: Making sure you're not a bot!
<zid>
is it possible to parse json on linux yet
<heat>
jq is great
<zid>
without just eval'ing it in spidermonkey
<zid>
which is how it worked last time a random system package wanted json
<nikolar>
> gitlab.gnome.org: Making sure you're not a bot!
<nikolar>
low how useful these are
<nikolar>
heat: i agree
<nikolar>
json still sucks
<heat>
it is what it is
<heat>
json sucks until you think of xml
<nikolar>
i mean
<nikolar>
they both suck
<nikolar>
let's just not
<nortti>
at least xml has xpath et al, so that you can actually conscisely work with data without needing to hardcode your tooling
<zid>
oh and mozjs needed python-2 as well, checking
<nortti>
lol
<zid>
gentoo submitted an upstream patch to at least let polkit use duktape instead
<zid>
which is a like, a 'js engine in a lib'
<nortti>
"There are several tools in the .NET SDK that are self-hosting with very tight cycles, taking dependencies on essentially daily builds. For example, Roslyn takes dependencies on new C# features very quickly, so you can't build the 5.0.100 Roslyn using the 3.1.110 Roslyn. (5.0.100 is essentially the next version after 3.1.110 right now.)" bootstrap this, you filthy casual
<geist>
no it isn't, it's jut the 'late 1900s' is not a phrase you see
<heat>
THE YE OLD YEAR OF OUR LORD NINETEEN NINETY FIVE
<zid>
I took my penny farthing to school back then
<zid>
in the 1900s
<heat>
king in charge? King Bill Clinton
<nikolar>
zid: lol
<zid>
heat: I have a photo of my dad hanging out with king bill
<n00by_>
irc is like the vintage hackerschool because of guys like y'all, neckbearded kernel hackers :3
<zid>
nikolar: you are vintage now
<n00by_>
LOL
<zid>
I don't make the rules, sorry
<nikolar>
zid: yeah I'm vintage
<nikolar>
Like my ps2
<zid>
die
<nikolar>
Lol
<zid>
I still haven't played through all my ps2 games yet
<zid>
I should work on that
<nikolar>
Yeah go ahead
<nikolar>
You aren't getting any younger
<GeDaMo>
I've been playing some PS2 games on an emulator, currently playing Okami
<zid>
GeDaMo: neato
<nikolar>
n00by_: may I ask how old you are
<n00by_>
niceee, i should take some inspiration
<zid>
You'd need a real ps2 for like, gt3 though
<n00by_>
nikolar: 22
<zid>
because nothing has or emulates pressure sensitive face buttons
<nikolar>
Lol mate
<GeDaMo>
Unfortunately my optical drive stopped recognising disks so I can't rip any more at the moment :(
<nikolar>
I'm 24
<n00by_>
oh hey, fello zoomer :3
<n00by_>
we're the minority on irc
<zid>
GeDaMo: I have a 2TB torrent of most ntsc games
<n00by_>
fellow*
<nikolar>
GeDaMo: you should load game over Ethernet
<zid>
unless you wanted to play them in frenchies
<n00by_>
fuck, cant type
<nikolar>
If your PS2 has it
<nortti>
zid: funnily enough, while I own a ps2, it didn't come with a working controller, so I'm using the original dualshock from my ps1 with it
<zid>
nortti: no mgs2 then :( :(
<nikolar>
Oh yeah controllers die easily
<zid>
ps2 controllers lasted the longest of any controllers I've owned
<zid>
but they do die *eventually*
<GeDaMo>
I bought a new controller, I have an adaptor for the PS ones but all my old controllers are kind of grotty :P
<nikolar>
Eh I yuessb
<nikolar>
*guess
<nikolar>
My perspective might be skewed, it's been a while
<nortti>
yeah, the dualshock is aiui original, but I am not a heavy impact gamer
<zid>
GeDaMo: all the playstation controller adapters I found were actually only good enough for original dual shock
<zid>
:(
<zid>
and the emulator plugin config couldn't handle ds2s anyway
<zid>
no way to bind axes to face buttons
<GeDaMo>
My adaptor works, the controllers not so much
<zid>
GeDaMo: does it show as an 18 button dinput device or something?
<GeDaMo>
Hmmm ... I don't remember
<zid>
I've literally *never* seen a ds2 adapter, because.. nothing supports them anyway, kek
<heat>
i use an xbox controller because i have principles and values
<n00by_>
lol
<zid>
heat: 360 or xbox or xbox fat?
<heat>
xbone
<nortti>
I use an xbox controller (controller for the original xbox), because I have principles (committing to the bit) and values (funny)
<zid>
so none of the things it could have been when you said xbox :P
<heat>
i have various xbox 360 controllers around
<zid>
I had an xbone 3rd party, the sticks broke off
<nikolar>
heat: eww Xbox
<heat>
but they're wireless and i don't have a receiver for them
<zid>
because it was a tiny square pin hammered into the joystick nub
<nikolar>
Dual shock forever <3
<n00by_>
yeh
<zid>
which meant ANY twisting motion AT ALL, would jsut bore a circular hole
<zid>
with the nice square broach
<nortti>
lol
<nikolar>
Lol
<zid>
then the joystick caps would fall off
<zid>
I am now using an honestly pretty okay, incredibly cheap, switch knockoff. But it has digital triggers so no racing games for meee
<zid>
ps5 controllers or whatever are like £80, madness
<n00by_>
ps5 is for the normies
<vdamewood>
They only feel like a few ounces.
<geist>
shots fired
<nikolar>
zid i tried an F1 game on the psp
<nikolar>
It sucked lol
<nikolar>
The controls I mean
<GeDaMo>
The new controller I bought is an "official" PS4 controller from a company called Nacon
<nikolar>
Not the psp itself
<zid>
*there exists*, knockof 360 controllers, which would be perfect. But there also exist, knockoff-knockoff 360 controllers which are useless. And you have no idea which are which.
<geist>
really though of all of the controllers i've owned over the years, and i have a lot, not once has any of my playstation controllers died
<geist>
i have lost multiple xbox ones
<geist>
stick drift, etc
<nikolar>
See
<nikolar>
Dual shock for lyfe
<zid>
ds1/2 don't have analogue triggers though nikolar
<vdamewood>
I wish I had a DS4 controller.
<geist>
though i also have one of the Dukes
<zid>
and nothing supports ds2 anyway
<geist>
they're great
<nikolar>
zid eh fair enough
<vdamewood>
Funny enough, the face buttons on DS2 are analog.
<nortti>
I don't have a duke myself, but rather the redesigned one
<zid>
top one = switch pro, bottom one = keyboard encoder
<zid>
joy.cpl
<GeDaMo>
I'm on Linux :|
<zid>
pfft
<vdamewood>
On the one hand, I want to make an OS that can be operated entirely by controller. On the other hand, that's the OS for every console out there.
<zid>
nikolar how do HID devices work on linux
<zid>
wine joy.cpl
<geist>
nortti: hmmm! i should dig out The Duke and see how it works. honestly havne't thought about it in a long time, it's in a box somewhere
<zid>
usbhid-dump
<zid>
part of usbutils which is like pciutils and gives you lsusb
<zid>
woo linux
<heat>
FUCKING LINUX BABY WOOOOO
* vdamewood
tries to install isautils
<GeDaMo>
usbhid-dump just gives me a whole lot of hex
<zid>
nice
<vdamewood>
GeDaMo: Sounds good. Read the hex.
<zid>
correct
<zid>
those are your HID descriptor reports
<zid>
you need to press buttons and watch the bits flip
<heat>
"daaaaad my controller isn't working on your stupid linux computer"
<heat>
"that's okay son just execute usbhid-dump and read the hex"
<zid>
you can't do it?
<heat>
i don't know if i can
* vdamewood
sits on the loo and takes a hexdump
* zid
wrote a hid input layer for a game once, so actually knows how this shit works
<GeDaMo>
"BREAKING: Mount Lewotobi Laki-laki in Indonesia has erupted"
<n00by_>
looks bad
Terlisimo has quit [Quit: Connection reset by beer]
Terlisimo has joined #osdev
parabirb has quit [Quit: WeeChat 4.1.1]
Turn_Left has joined #osdev
wgrant has quit [Ping timeout: 244 seconds]
parabirb has joined #osdev
Left_Turn has quit [Ping timeout: 276 seconds]
wgrant has joined #osdev
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
Yoofie646446382 has quit [Ping timeout: 268 seconds]
mx08_ is now known as mx08
<nikolar>
someone linked a book about CDC 6600
<zid>
did you chastise them
<nikolar>
and in the instruction listings there's a "logical difference"
<nikolar>
is that like xor or something
<zid>
xnor is == if that helps
<nikolar>
there is logical product, sum and difference
<heat>
nand?
<nikolar>
i know the first two, i imagine the difference is xor though
<nikolar>
heat: why nand
<heat>
no, nand wouldn't be that
<heat>
i'm tired and dumb
<nikolar>
lol
<heat>
might be xor yeah
<zid>
to my modern ass eyes, logical just means 'signed' :P
<nikolar>
signed?
<nikolar>
why signed
<zid>
rather than binary, meaning unsigned
<nikolar>
eh?
<nikolar>
in what context is that the case
<zid>
logical shifts vs non-logical shifts, as an example
<nikolar>
logical shifts are unsigned
<nikolar>
arithermtic shifts are signed
<zid>
arithmetic I guess is the real term
<zid>
yea
<nikolar>
so the other way around
<zid>
can we ask turing, he'd know
<nikolar>
lol
<nikolar>
too bad he's dead
<n00by_>
> someone linked a book about CDC 6600
<n00by_>
that was our master GeDaMo :P
<zid>
some old fart
<zid>
what channel is this
<zid>
electornics?
<n00by_>
lol
<nikolar>
oh yeah GeDaMo
<nikolar>
zid: hey the 6600 is a computer
<nikolar>
you can osdev on it
<zid>
okay but what channel was it
<nikolar>
this channel
<n00by_>
do you guys think reverse polish notation is more natural than infix?
<zid>
I don't believe you
<nikolar>
too bad
<GeDaMo>
zid: serves you right for not paying attention :P
<nikolar>
lol
<nikolar>
n00by_: not really
<n00by_>
ah, ok
<heat>
offtopic
<zid>
too busy looking at hid and volcanoes
<nikolar>
it's easier for computers for sure
<zid>
'more natural'
<zid>
is obviously meaningless
<nikolar>
yea
<zid>
0 semantic payload right there
<nikolar>
why hid and volcanoes
<GeDaMo>
Nothing about computers is natural :P
<n00by_>
nikolar: i was looking at forth, so i had to ask that question :)
<n00by_>
silly ik
<zid>
poor boy
<zid>
Empirically, enjoying forth makes you a member of the IRA
<nikolar>
is that so
<zid>
given my sample size of 1
<nikolar>
lol
<nikolar>
statistically significant
<kof673>
cdc something or other is sign and magnitude some of them IIRC and there were c compilers but not sure about emulator etc.
<kof673>
just use a cult of dead cow logo when you make your emulator
<n00by_>
well, postfix is definitely easier to parse, so yeah
<zid>
unless you're japanese
<nikolar>
eh?
<zid>
or *shock*, german
<zid>
where they stack all the verbs up at the end
<nikolar>
i don't think computers care about that
<zid>
we're talking about notation
<n00by_>
yeah, they care about arithmetic operators
<n00by_>
seek help zid :P
<zid>
no they don't
<nikolar>
yeah, and i said that rpn is easier for computers
<nikolar>
which is presumably what n00by_ replied to
<zid>
yea yea
<zid>
in other news, I hate writing parsers it sucks
<zid>
do not recommend
<nikolar>
indeed
<nikolar>
just parse lisp
<nikolar>
it's almost trivial
<zid>
isn't lisp one of those proper oo languages where you can just rewrite it in itself
<nikolar>
what's oo got to do with it
<n00by_>
so is lisp's grammar
<n00by_>
parse c++
<n00by_>
good luck
<nikolar>
eh?
<zid>
cus that's what oo was before C++ decided oo was something else entirely :P
<nikolar>
no?
<zid>
pure copium
<n00by_>
nikolar: i was kidding lol
<nikolar>
yeah i didn't get the joke
<n00by_>
i said, lisp has a simpler grammar
<n00by_>
in bnf
<zid>
C++ has undecideable grammar
<zid>
so that's not a high bar
<nikolar>
lol
<n00by_>
LOL
<zid>
not a joke
<nikolar>
indeed
<zid>
aa bb(cc);
<n00by_>
ofc it was
<n00by_>
i liked it
<nikolar>
which makes it even funnier
* n00by_
zid gets a sandwich from me
<nikolar>
zid: he loves you the most apparently
<zid>
n00by_: when AA and CC are types, that's a function prototype, when AA is a type and CC is an identifier, BB is an iinitialization, when AA is an identifier, it'sillegal
<zid>
and it can all be inside templates
<zid>
You can resolve it with two passes, collecting up type names to use for the second, but you can't *not* parse things on the first pass in case your templates or macros or whatever spit out a typedef
<zid>
so you literally need to fully parse it, twice
<zid>
or just.. guess, which is what *actual* compilers do :D
<nikolar>
i mean you can't trivially parse c either
<nikolar>
because casts look like expressions
<zid>
yea you also need to typedef dictionary for C
<zid>
you can't just throw yacc at it
<zid>
thankfully types must be forward declared
<nikolar>
unfortunatelly
<zid>
(and no templates)
<nikolar>
yea
<kof673>
if you want a multiple layer logo for your cdc emulator, then cult of dead cow logo + cow tools comic + "behold, it is i, even he, and i am living forevermore" caption :D
<n00by_>
gcc/cp/parser.cc is ~50K lines. i should continue playing with forth as a member of the IRA :P
n00by_ is now known as n00by
<zid>
did I ever remember to recover my lost tokenizer source nikolar
<nikolar>
nope
<nikolar>
you never mentioned it at least
<nikolar>
n00by: you shouldn't take gcc source size as a measure of complexity of the language
<heat>
i mean it's unfair to look at the C++ parser
<heat>
like, jesus
<heat>
pick something reasonable?
<nikolar>
lol
<n00by>
nikolar: why not? :D
<heat>
the C parser is 15KLOC it seems
<n00by>
~30K
<zid>
ah, I did
<zid>
C++ has more grammar than all the world's spoken languages
<zid>
Thank god for linking source to people as gists so I can just find the link again then get my source back, after I stupidly dd the wrong drive :D
<heat>
i would die for gc-fucking-c baby what a compiler lets go
<heat>
GNU GNU GNU
<nikolar>
GNU GNU GNU
<heat>
google and nvidia and facebook? we don't need those guys
<heat>
gcc is built on the power of friendship
<heat>
and SUSE and redhat
<heat>
ooooh linux distro friends!
<nikolar>
THE POWER OF FRIENDSHIP BABY
<nikolar>
GCC GCC GCC
<zid>
53 mins until tutor prepub
<nikolar>
lol
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
<heat>
sounds like a shitty knockoff gcc
<nikolar>
prepube
eluks has quit [Remote host closed the connection]
eluks has joined #osdev
<n00by>
nikolar: even if we ignore the size of the parser, c++ is still our least desired language tbh, no? we write it because we have to, we get paid for write unreadable code :D
<n00by>
writing unreadable*
<heat>
you best believe lots of people enjoy writing C++
<zid>
There are people who are brainwashed
<nikolar>
zid: or braindead
<zid>
They think that because it took them 20 years to get passable at, that if it weren't the greatest language ever, it wouldn't have taken them 20 ye ars
<nikolar>
but yeah, c++ bad
<zid>
it's a mental defence mechanism about wasting 20 years of their life
<heat>
C++ bad C good up to 99
<heat>
upvotes left
<zid>
doots*
<n00by>
knuth doesnt like c++ for a reason :P
<nikolar>
is he ever going to finish his books
<zid>
george r r knuth
<heat>
no he's too busy building a big program in C
<n00by>
i think he will <3
<n00by>
vol 5 will contain parsing
<heat>
volume 6 will be an in-depth discussion about including glib or not
<nikolar>
i should probably check the bookies out sometime
<n00by>
im being honest, im just too retarded to make any reasonable comment on his books :)
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
<n00by>
nikolar: they're great, just too hard.
<n00by>
gcc even targets mmix
<GeDaMo>
I remember using volume 3 Sorting and Searching in the 80s :P
<n00by>
fuck, master GeDaMo again
<nikolar>
GeDaMo: how old are you
<GeDaMo>
0x3C :|
<zid>
4
<zid>
oh don't write numbers
<zid>
He's 84
<n00by>
why is it that you have access to every goldmine that EVER existed? is GeDaMo a standford dropout? :P
<GeDaMo>
I just read a lot :P
<heat>
he's 0x3c
<heat>
he's had a loooooooooooooot of time to collect this sort of stuff
<n00by>
boi, you're something man
<nikolar>
heat: he was there when it was written
<n00by>
GeDaMo, is only of the real experts lurking in plain sight, NGL
<n00by>
occasionally reveals himself
<n00by>
lol
<zid>
Important announcement btw
<nikolar>
is it about prepubes?
<n00by>
is one of the*
<zid>
someone has found the holy grail food in aldi. The UK added little coloured boxes to the front of packaging to let you know about kcal/salt/etc
<zid>
just in case I stop being blind in the next 50 mins
<nikolar>
lol
<nikolar>
there
<nikolar>
it's runnin
<n00by>
epubes? lunduke on vtube?
<nikolar>
eh?
<zid>
genz nonsense so nonsense that even nikolar doesn't know it
<nikolar>
lol
<heat>
don't mention that person here
<heat>
thanks
<zid>
heat is zoomer enough to know things though
<n00by>
i wont, your welcome heat
<zid>
he knows all the skibidis and incels
<nikolar>
don't forget the toilets
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #osdev
<zid>
okay I read it, coma time
svm is now known as msv
<n00by>
there's an assembly programming discord server called "underware programming" xD
<nikolar>
ugh discord
<n00by>
deleted it
<n00by>
i still had the memory of that name though
<n00by>
well, zid adores it, i heard. disco-disco-discord
jcea has joined #osdev
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
corinne has quit [Remote host closed the connection]
corinne has joined #osdev
<n00by>
btw, dumb ques, is the hardware stack an array of cpu registers or is it a array of memory cells in a sram/dram?
<nikolar>
could be both
<n00by>
ok
<nikolar>
erm either?
<nikolar>
but in basically every arch you get to program, it's in memory
<geist>
yeah the latter
<geist>
there are some older arches where it can be in registers, etc, but anything modern its all memory
<nikolar>
geist: i think there are some really specialized cpus that also do it with registers
<nikolar>
but yeah, you'll only ever come across memory based stacks i imagein
<geist>
(8008 comes to mind, it iirc has 8 internal stack registers)
<geist>
and TMS 9900 i think has some wonky 'registers are memory' thing that blurs the line
<geist>
though i forget how it deals with stacks
<clever>
i believe the centurion also has the registers in the first 256 bytes of ram
<clever>
but the stack is meant to be in regular ram
<geist>
yah some older arches back when mem was faster than the cpu you can treat 'registers' as just essentially a fast memory access
<geist>
it was fairly common to map registers into memory like that
<nikolar>
6502 lets you treat the first 256 bytes as registers (kind of)
<clever>
but thats more like allowing an 8bit addr for load/store
<geist>
well, if you think of it as registers are an address mode that uses a tiny bit of bits to get to 'memory' and then the zero page is another slightly slower address mode that needs 8 bits to access memory, and then direct addressing is slower and needs 16, etc
<geist>
right
<clever>
with the centurion, there are ~16? banks of registers, meant for hw threads, and all banks sequentially are at 0 in the addr space, so you can pre-configure another thread
<geist>
the different comes in thingsl ike can you use a higher level addressing mode to accses a lower one
<geist>
clever: yeah okay, that's an example of registers are memory i was thinking about
<geist>
TMS9900 has a register base register which then specifies where in memory the (IIRC) 16 registers are
<clever>
ah, neat
<geist>
and then when you access r0 or r1 or whatnot it goes against that base address
<geist>
so kinda a middle ground. it's like a 4 bit addressing mode against a Direct Page which is really what the 6502s is a special case of
<geist>
6800 and 6809 both have movable direct pages, but 6502 being basically a RISCy clone of 6800 has it fixed at 0
<geist>
(same with stack, which is always 0x100-0x199 instead of having a proper 16 bit SP)
<nikolar>
later revisions did let you remap the zero page (and the stack i think)
<geist>
usually external mmus did that
<geist>
and i may be wrong about 6800 having a movable DP, but 6809 definitely did
<nikolar>
i mean that the cpu itself held the base registers
<nikolar>
which you could modify
<geist>
if you ever get a chance to fiddle with it, 6809 is a lovely architecture
<nikolar>
(by later revisions, i meant long after 6502 was relevant as a desktop cpu lol)
<geist>
it's like the culmination of 12 years of 8 bit cpus, came too late, but was lovely
<nikolar>
motorola made some nice archs
<n00by>
tysm guys <3
<n00by>
stack frames and call stack etc is all in memory it seems
<n00by>
register file in modern cpus confused me though
<n00by>
now i have some idea
<nikolar>
if you're thinking of physical register files, yeah they can hold a lot of data that doesn't fit into architectural registers
<geist>
yah and if you're using x86-64 as a modern arch, it's really not. consider it to be a 70s era arch
<geist>
if you're just learning things keep in mind anything about x86 is not really a great example of anything modern is all imean
<n00by>
ah :D
<nikolar>
well, define modern
<nikolar>
riscv?
<nikolar>
ew
<geist>
arm64 riscv, yeah
<nikolar>
i don't really agree
<nikolar>
what's so modern about riscv
<geist>
which really are pretty mid 80s RISC, but that's about as modern as it comes with standard ISAs nowadays
<nikolar>
it's basically a mips from decades ago
<geist>
sure, but my point is that's still a decade after x86
<nikolar>
no better or worse than x86
<geist>
disagree
<nikolar>
modern x86 is nothing like 80s x86
<geist>
disagree
<geist>
it's very much mostly the same thing, just layers of stuff on top.
<geist>
worse, it's like 7 extensions of layers on top
<nikolar>
it can do the same thing it did back then
<nikolar>
but no one uses it like that
<geist>
this prefix byte escapes that prefix byte, etc
<pog>
i use it in 16 bit protected mode all the time
<nikolar>
lol what for
<pog>
for uh
<geist>
inconsistently zero or sign extends, inconsistenlty access pieces of registers based on which era register it is, etc
<geist>
some instructions operate against particular registers, etc
<geist>
lots of old 70s things are totally still there
<pog>
ok i lied
<nikolar>
there we go
<geist>
and riscv being basically mips, while that's true to a certain extent, it is also got a lot of newer ideas and cleaned up issues with original mips
<geist>
it's definitely similar, but lessons were learned
* pog
mips
Turn_Left has quit [Read error: Connection reset by peer]
<nikolar>
riscv is a lame architecture
<nikolar>
doesn't even have scaled indexed addressing mode
<geist>
yep, it *specifically* doesn't have that
<geist>
it has exactly one addressing mode
<nikolar>
and that's lame
<nikolar>
as i said
<geist>
okay
<nikolar>
arm has more addressing modes
<nikolar>
and it's a far more interesting arch
<nikolar>
if riscv wasn't interesting for being an open arch, no one would've cared
<geist>
oh dont get me wrong i dont think riscv is that 'interesting' in that regard, and the lack of any more powerful addressing modes may hurt it but the former is mostly subjective
<geist>
ie, it being interesting doesn't really matter, its the other details that do
<geist>
notably being open, yes
<nikolar>
but that's the only relevant thing about it
<nikolar>
is my point
<nikolar>
it didn't "win" based on any technical criterion or whatever
<zid>
x86 isn't very orthogonal, no, but.. I don't see what that has to do with modern
<nikolar>
it's literally free and that's it
<geist>
i dont think anyone s really disputing that, but that wasn't the originatl stately
<geist>
statement
<geist>
eep, got meeting
<nikolar>
have fun
<nikolar>
i am just saying riscv isn't a good example of anything
<nikolar>
other than how to sell an isa on being free
<zid>
nikolar: We should pump a billion dollars of R&D into making silicon for a throw-away teaching architecture, as a joke
<nikolar>
zid: someone already did
<zid>
we could call it RISKY BEE or something
<geist>
i disagree, but it's for different reasons
<geist>
it's 'clean' because it's simple and regular
<geist>
and if someone is learning things i think that's a better starting point
<zid>
and it quickly got very UN clean the moment anyone tried to do anything modern with it
<zid>
risc-v-kfq512axasdkc
<geist>
can you give me an example?
<nikolar>
geist: well, i doubt anyone's pc is going to run anything but x86 (or possibly arm) any time soon
<zid>
and still can't do atomics, that's pending
<nikolar>
so better start there
<zid>
riscv is a cpu instruction set, but it turns out, modern pcs mainly revolve around memory management, and the cpu part is kind of irrelevent. What makes an ISA different to another ISA is what you call all the serialization, atomic, etc bits
<geist>
i dont think that's a real extension
<geist>
riscv atomics are part of the base RVA spec and has for years
<geist>
rv64gc includes the 'a' extension
<clever>
its also in the name of an emulator ive worked on, mini-rv32ima, i think thats integer? mult? and atomics extensions?
<geist>
correct. imacfd == 'g'
<zid>
is there a divide yet
<geist>
yes, it's part of m
<zid>
it wasn't, in the draft I heard of
Lucretia has quit [Remote host closed the connection]
<zid>
multiplier but no dividerator
<geist>
that draft would be like 10 years old at this point
<zid>
I only see the occasional bit of risc-v 'news'
<zid>
and I doubt "we added divide in an rfc" made it to any aggregators
<geist>
my point is if you're going to throw shade at a thing at least do some research
<zid>
just "lol they finally added mul, but not div", because that's funny
<zid>
if you think <zid> riscv is a cpu instruction set, but it turns out, modern pcs mainly revolve around memory management, and the cpu part is kind of irrelevent. What makes an ISA different to another ISA is what you call all the serialization, atomic, etc bits
<zid>
is shade
<nikolar>
hey, my shade throwing was factually correct
<zid>
then I just can't talk about anything ever
<geist>
no bit you're lol riscv doesn't have div or atomics
<geist>
is just totally wrong nowadays
<zid>
I mean, it doesn't have anything, in practice, nobody has these chips outside of tiny dev boards, or if they do, it's a custom run where the 'riscv' part is irrelevent, and it's just poking other controllers
<zid>
because it's free
<nikolar>
technically, the chinese are building shitty server riscv cpus
<nikolar>
i wonder if they are actually deploying those
sprock has quit [Remote host closed the connection]
<zid>
It's like, nice I guess, that people are bothering to collaborate on how they are extending risc-v to be useful to them
<zid>
but that sort of proves my entire point, the risc-v part being irrelevent
<zid>
what matters is the extensions to turn it into a useful product
<nikolar>
the hard part isn't creating an isa
<zid>
and not just a vacuum ISA
<nikolar>
it's actually building the sillicon
<nikolar>
and making it go vroom
<nikolar>
that's ridiculously hard
<geist>
thing is there are *tons* of riscv stuff out there already
<zid>
I mean, it's the exact argument we make about x86, that the frontend is irrelevent, it doesn't matter that it's non-orthogonal
<geist>
i't sjust not a desktop or server and thus you dont seem to know or care about it
<zid>
yes, and that's because risc-v is free, not because the ISA is 'very orthogonal'
<nikolar>
geist: anything that can even remotely compete with my laptop?
<nikolar>
because microcontrollers don't count
<geist>
ah thats the gist of it isn't it
<zid>
it's as an mcu in a hard drive or whatever for poking the actual controller awake and doing pm
<nikolar>
i've repeatedly said that riscv is ideal for mcus
<nikolar>
probably in this channel too
<zid>
people were happily using PIC and stuff for that, and that's awful :P
<geist>
right and then you'll say that it's totally irrelevant
<geist>
which is not the case
<nikolar>
but that's not what anyone means when they talk about modern relevant isas
<geist>
it's extremely relevant
<nikolar>
geist: there are pic16s or whatevet still being used
<nikolar>
i wouldn't call pic16 a relevant isa
<geist>
okay, then we will agree to disagree
<nikolar>
sure
<nikolar>
n00by: oh i just remembered
<nikolar>
some isas have register windows
<nikolar>
that work sort of like stacks
<nikolar>
sparc is an example
Yoofie6464463823 has joined #osdev
<n00by>
yeah, looked it up and looks like it's old mips / sparc tech like you said :P
<geist>
gosh i'd have to page that all back in but iirc it's more like at the start of each function you 'allocate' a variable number of registers (dunno if it can be truly variable,but it doesn't have to be a multiple of 8)
<geist>
and then the registers you didn't allocate are iirc off limits, and will fault if you touch them
<zid>
what was that weird vax convention
<zid>
something to do with registers, dang
<geist>
since it hides it behind some allocation scheme it can implement it behind the scenes
<nikolar>
i should probably look into ia64 at some point
<geist>
so if your function only needs 5 registers it only gets like r32-r36 or something (iirc r0-r31 are always there?)
<nikolar>
but the information is kind of scarce lol
goliath has quit [Quit: SIGSEGV]
xenos1984 has quit [Read error: Connection reset by peer]
<geist>
but that means the hardware can rotate them or whatnot however it sees fit
<geist>
iirc there was another feature where you could pick a range of registers and literally rotate them
<geist>
like for loops or something
<n00by>
wild
<geist>
ia64 was like throw every crazy idea you ever had in one place
<zid>
I'm sulking because I can't remember the weird vax thing
<geist>
some of which are neat, some of which were a bad idea
<nikolar>
zid: what kind of convention
<nikolar>
calling convention?
<geist>
zid: probably the bitmap you put at the start of a function taht the calls instruction uses to auto push the registers
<nikolar>
or something else
<zid>
idk I can't remember it, but yea, calling
<zid>
yes that thing!
<nikolar>
oh you can do sometihng similar in m68k
<zid>
I figured geist would know, but I had no way of transmitting what the fuck I was talking about
<nikolar>
push multiple regisrers in one instruction
<geist>
yah the calls instruction does a *lot* of stuff, including pushing the whole stack frame, and a variable amount of registers
<nikolar>
arm can also do it i think, bit only for contigues registers
<zid>
I think they removed that?
<geist>
but vax only has 16 regs so a single 16 bit word is enough
<zid>
Because it was so fucking ungodly to deal with if you pushfb {r0, r14} and then it faulted on r12
<geist>
stm was pretty much always there in arm32 from the get to: store multiple
<zid>
they had to add a special flag for "we're the middle of a stmdb"
<geist>
and it takes basically a 16 bit bitmap
<geist>
since arm32 has 16 regs
<zid>
aarch64 decided it was too much of a pain in the arse and doesn't have it :P
<geist>
correct. much of arm64s design is about simplifying the underlying architecture
<geist>
and anything that takes a variable amount of time to run was removed
<geist>
(and then added back in v9.4 with MOPS heh)
<nikolar>
lol nice
<geist>
arm64 has a lot more exotic bit instructions and whatnot, but they're more or less all 'simple' in that they're single operations that doesn't require iterating on a thing
<geist>
so in that regard it's very much in the same vein as riscv. same general principle
<geist>
just a higher level of complexium because they're okay with that
<zid>
makes me wonder what xsave does now
<geist>
a *lot*
<zid>
?
<geist>
and more stuff is added to it over time because it's generic
<zid>
what
<geist>
it's sort of the last word in saving things
<nikolar>
can you rely on it to actually save everything relevant
<geist>
tis why there haven't been any additional new instructions added after xsave, since it's a variable sized things that you have to query to see what it can do and then opt into each piece of state
<geist>
well, not everything, but it's fully documented what it can do
<zid>
oh right it has a header, that probably answers my question
<geist>
so if you have AVX512 for example it'll absolutely export a feature of 'i can save the YMM and ZMM bits and heres how much space it occupies at offset Y'
<geist>
it's all iterated via cpuid
<zid>
yea we know all that
<nikolar>
is xsave actually being used i wonder
<zid>
yes
<zid>
It's useful and cool
<geist>
well, nikolar was asking me
<zid>
the question was how it interacted with exceptions, given arm had to add flags and stuff to restart it
<n00by>
we learn so much during geist's comp arch class lol, thanks :P