NX means not executable, so some bytes are excutable, some are non excutable. so some are instructions for the processor and others are data. Sometimes those are mixed and the cpu pukes out a bunch and restarts interpretation. most of the time those are normal. keep it normal and go fast.
The first sentence of the main site is "D2: Declarative Diagramming - A modern language that turns text to diagrams", followed by multiple code snippets and the resulting diagrams.
Oof, maybe don't. A lot of them are written directly for children, which they mostly work for, but only later bits have stuff mostly for adults and are vaguely worth analysing.
Don't what? I enjoy a lot of media written for children. Trollhunters / Tales of Arcadia, Miraculous Ladybug, Max Steel, My Little Pony (G4), Sonic Prime, etc. Though I tend to prefer media that respects intelligence rather than pure babyslop.
Max Steel in particular was so untargeted to adults that it's nearly lost media. I'm so glad for whoever managed to collect it and upload it to YouTube while it was still available.
Don't spend too much time on what was at the moment not meant for adults, like there is alot of other art to look at and interpret. It was more of a don't get crazy into it, my own Dad got super weird into interpreting things he thought he found in Doctor Who. It was both sad and weird. Just maybe don't dwell to much on things people didn't also give much thought to.
I think the existence of enough technical information for such an index to even be possible is what I mean by internal consistency. Not the absence of plot-holes or ret-cons.
Doctor Who is the opposite of Star Trek. It makes little attempt at internal consistency. It helps that time travel plays a large part in it. That said, it's been unwatchable for quite a while.
Hot take: NX bit is shit W^X is shit. proper JIT is having objects written as needed, and cache line flushing is full bullshit, we need self modifying code as a first class citizen and with modern techiques we can have it work and not be crazy slow, it is currently cuz shits fucked, but we can do better.
Disallowing smc is a significant perf/power win. For cpus that run a large variety of large code (e.g. a web browser or ux stack), being able to cache a large instruction footprint and fetch/decode it quickly is important. Having to have the icache snoop data writes and entangle the i-fetch with the store buffer machinery would be a huge penalty to pay for a niche use case. Unlike loads, which are a small fraction of instructions to disambiguate with stores, you'd have to disambiguate every single instruction.
JIT is important to Apple platforms, and they seem to manage to make it work well enough even with the need for explicit invalidation.
FWIW if you look at WebKit/JavaScriptCore, the trend has been towards less-frequent code modification, e.g. inline caches are mostly no longer repatched inline. Whole-function reoptimization is still worth the overhead of sys_icache_invalidate() + `ISB`'ing everyone involved, but at smaller granularities not so much.
So that is only true because we do it, there is a world where we optimize differently and that self modifying version works better, reread the synthesis kernel thesis(one, it is super easy, two they did this), we could have hardware that does this. Because we don't have hardware that does this we don't
If DRAM gets the ability to modify itself (computations), it doesn't eliminate the cache layer between the CPU and DRAM. For the CPU to see updated DRAM values it has to bring in the DRAM to cache. Now, if that's a large amount of data, like 1MByte of computations, it's worth it, but for a couple of source/destination addresses in code, probably not. There's also the fact instruction and data caches are separate.
Now, if the RAM in the CPU cache gets computational ability as well, that all changes, but not sure really that would be better than SIMD/SEE/AVX stuff or expanding what can be done with the new tile registers Intel's rolling out.
Yeah, that works okay, but really is a you shouldn't, with pipelining you lose all the predictive decoding. The Synthesis kernel did some cool ass shit with this, but failed in other architectures due to pipelining, which speeds up shit, but change the opcodes(with other instructions(ie selfmodyfing code)) and shit gets flushed.
They did Wayland instead, that killed X11 since X11 windows and such can be spawned under Wayland. but wayland isn't x11 so people miss shit and wish it was there.
Ages ago Redhat people wanted to stop supporting X11 since it was old and harder to maintain with all the weird extensions and it being older C code. They wanted to move to Wayland and people claim that maybe in maintaining X11 Redhat also made some changes that made X11 worse. You can find all kinds of discussion of why Wayland is bad or why X11 is bad and Wayland is the one and only future. Now things are settled and Wayland won.
Firefox is the best of a bunch of bad options, but isn't above critique. It does suck when they do anticonsumer stuff and shove weird stuff like pocket in, but you can't leave which makes it similar to the democratic party where you can't really do anything, but they keep making really poor decisions.
reply