Introduction to Portable Executables (.exe Files) - Kronark

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ต.ค. 2024

ความคิดเห็น • 127

  • @Kronark
    @Kronark  2 หลายเดือนก่อน +23

    Another very dry topic we simply have to cover - it would be weird if I just started using some nodes for portable executables out of nowhere, wouldn't it? I really tried to make this one shorter, since I feel like video quality suffers the longer a video goes, but turns out there really isn't a way to discuss all those different bytes in less than 5 minutes :D Hope it's not too boring, it really is just the setup for some cool sh*t later down the line!

    • @dec4dent
      @dec4dent 2 หลายเดือนก่อน +12

      I'd argue the dry nature of it is the exact opposite of boring, yes it's technical, but I imagine a lot of your viewers, including myself, are here to learn the mysteries of the extremely low level computing you're implementing.
      Using nodes to explain this is a really simple way of visualising what these structures are actually doing, rather than reading (and failing to understand) even dryer implementation documents.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +7

      @@dec4dent I suppose you're right :) I'm a bit torn tbh, on the one hand I really reaaaally want to get started with computer graphics, on the other I want to make sure all these fundamentals are implemented as robustly as possible :D Can't wait to share what I'm working on for my master's...

    • @md20m
      @md20m 2 หลายเดือนก่อน +5

      I found it really interesting and not at all dry. Yes there are a lot of technical stuff but that's in my opinion the charm of your videos as well. You explain all of this so well that it's easily understandable and very interesting

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +3

      Cheers mate!

    • @azurarobo
      @azurarobo 2 หลายเดือนก่อน +1

      Tbh, i like longer videos

  • @ygypt
    @ygypt 2 หลายเดือนก่อน +12

    You know what's insane about this project? Because all behaviour is emergent from the most minimal form, there can be *_more than one programming language_* in this format. Prodecural vs Functional, Object Oriented vs Data Oriented, all of the dilemnas that we solve and resolve with text-based programming can be solved and resolved once again using these nodes. I can already see it; a day when you can start your program with the "Whole Ass Game Engine" node and begin scripting character controllers with "Update GameObject" nodes and push your gLTF files into "Render Mesh" nodes. This is so infinitely extendable and I am honestly shocked at how well executed this whole project is. I will absolutely be tuning in every week :)

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +6

      It is so god damn refreshing to read comments that actually get the potential of this tool

  • @tordjarv3802
    @tordjarv3802 2 หลายเดือนก่อน +13

    This must be the most ridiculously ambitious TH-cam Channel I have ever encountered. I'm curious to see where you end up with this project.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +3

      I'm just as curious as you are! Hope it all goes well...

  • @djordjepepic1656
    @djordjepepic1656 2 หลายเดือนก่อน +23

    It's fascinating to watch you put this compiler together piece by piece from scratch, I'm very curious to see how things will progress as you keep implementing more complex code and abstractions. Refreshing to see so many new and interesting ideas being explored so thoroughly.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +3

      Thanks mate! :)
      Hope it all turns out nicely in the end :D

  • @gwentarinokripperinolkjdsf683
    @gwentarinokripperinolkjdsf683 2 หลายเดือนก่อน +47

    I think the reason a simple c executable is so large is the inclusion of the entire standard library

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +26

      Maybe. Just seems so god damn wasteful - no wonder concepts like DLLs had to be invented, if this is what minimal executables look like. Executable size is definitely something we'll have waaaay more control over with the compiler... Only the code that is actually used would be included for starters.

    • @darkfllame
      @darkfllame 2 หลายเดือนก่อน +5

      I think that modern compiler strips unused/unexported fonctions. For example (not a c compiler but) zig do that (for aig code at least). It's a little yet simple solution to large executables, and i think that libc has become a basic sharef library that every system includes (look at vcruntime, it's litteraly microsoft's libc). So most of OS's might just load libc at startup and when a program gets loaded, it takes libc functions from here (this is a BIG guess, might not be true at all)

    • @borstenpinsel
      @borstenpinsel 2 หลายเดือนก่อน +1

      ​@@darkfllameI'm sure there are compilers that link individual functions and get rid of the rest but the majority will still work with libraries. They will absolutely toss away a "import x.lib" line when no function of said lib is ever called. But removing parts of a lib seems like a good way of breaking a program if the dependencies are not well documented

    • @Gornius
      @Gornius 2 หลายเดือนก่อน +2

      Go's hello world takes 1852 bytes (Amd64/Linux). And I'm pretty sure that contains whole garbage collector. Stripping it from debug info gives 1208 bytes.

    • @0xfadead
      @0xfadead 2 หลายเดือนก่อน +1

      I think the compiler aligns the code to page boundaries

  • @dennishansen6545
    @dennishansen6545 2 หลายเดือนก่อน +11

    I really appreciate the comprehensiveness of the videos

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      Glad you think so! :)

  • @alanbarnett328
    @alanbarnett328 2 หลายเดือนก่อน +4

    This is fascinating! I've been a C programmer for years and have done some simple assembly programs, so seeing how it all unwinds is really beautiful. I really really love the node system, it reminds me in a way of a good makefile that only recompiles files that have changed! This is easily my most anticipated video series at the moment, and I'm so excited to see where this will go!

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      Build software is actually one of my key motivators to make this compiler - I was simply so fed up with them that I decided to build my own :D
      It's a bit like a makefile, except it works on the level of singular bytes, not entire files, so it saves a lot more time in that regard!
      Glad you feel that way, It's refreshing to have people around you that are excited as you are :D

  • @redyau_
    @redyau_ 2 หลายเดือนก่อน

    This feels like the start of Wintergatan Wednesdays: slowly watching an insurmountable problem be chipped away at, excitedly rooting for its success.
    Best of luck!

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Thanks man! :D

  • @JustATempest
    @JustATempest 2 หลายเดือนก่อน +1

    The next year is gonna be really fun.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      It‘ll be wild :D

  • @cscscscss
    @cscscscss 2 หลายเดือนก่อน +1

    amazing editing! love your videos

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Thankyou! :)

  • @Una-R
    @Una-R 2 หลายเดือนก่อน +3

    Honey cancel all my meetings, my weekly novel has started 🗿

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      oh boy, the pressure is getting real :D

  • @roazim
    @roazim 2 หลายเดือนก่อน +1

    I can’t wait to try out the final product

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Gonna be a bit until then unfortunately, it's still quite a buggy mess behind the scenes :) definitely going to be one of my first software products available in my online store though (for free, of course)

  • @dandogamer
    @dandogamer 2 หลายเดือนก่อน

    I've always wondered what goes on inside a .exe file. Great vid! Looking forward to seeing what the node graph looks like for the checksum implementation

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Thanks mate!
      Looking forward to that too, since I have no idea myself at this moment :D
      not sure if it'll actually be a node graph though, might be a dedicated node since the checksum calculation would have to run every time something changes - doing that algorithm as a node graph would add a ton of preventable overhead.

  • @BooLightning
    @BooLightning หลายเดือนก่อน

    I'm sharing this everywhere, nerds need to see this

    • @Kronark
      @Kronark  หลายเดือนก่อน

      Hahaha thank you!

  • @PaulPaulPaulson
    @PaulPaulPaulson 2 หลายเดือนก่อน +6

    The inofficial but widespread way of saying that there is no linker is to set the mayor and minor linker version to 255 if I remember correctly

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +3

      Ah perfect, thanks for the info mate! I‘ll implement that for the next video :)

    • @PaulPaulPaulson
      @PaulPaulPaulson 2 หลายเดือนก่อน +4

      @@Kronark Nice. But look it up first, my memory is not the best 😄

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +3

      Of course :D thanks for the hint either way!

  • @ickorling7328
    @ickorling7328 2 หลายเดือนก่อน

    Ah! So you are going to support Risc-V! I'm so happy! 🎉

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +2

      Gonna be a while until it becomes relevant though, but yes, definitely planning on it :)

    • @ickorling7328
      @ickorling7328 2 หลายเดือนก่อน

      @@Kronark I wish I wasn't such an amateur programmer so I could help out. This would be a dream project for me, essentially undoing decades worth of code plumbing hell with essentially a unifying code abstraction layer that's tray size agnostic and can support both scalar and tensor operations (in the future). And its portable!?
      I'm not a very capable programmer but I am a good theorist type, and into defi and open-source, all energy physics topics you can imagine, and also data engineering (databricks, Excel, an overview of most things).
      If you ever wanted somebody to explain actually useful unified field theory and direct you to the actual scale-invariant math which can unify relativity and quantum physics, just let me know. The theory is called E-infinity theory, and it's hard to jump into and 'get' which is why I'm offering to explain things. 🤔
      I have experienced over years that holding more accurate physics in mind while solving math or engineering is always an advantage, and that infact the world it trending towards needing to unpack the complexity of higher dimensional organization and space-time attributes in euclidian and non-euclidian space forms-- to do AI, to do code and defi, to compress data, to bridge data formats, to analyze, synthesize...
      I'm sure you're group is quite smart and so you'd very quickly surpass my understanding in some areas, since this information really adds up and follows some loose guidelines like duality and spinor-like modulations.
      I have years of research in crypto utility and business deals made that help predict the trajectory there, and I have plans to become a full stack developer of the decentralized internet using open-source technologies and a few novel applications of networking techniques.
      I'm seeking friends who develop actually good code for good intent purposes, so that perhaps one day we can assemble a project given there's mutual availability, interest, and assurances. However or whenever you feel comfortable to work or talk that's fine, I recognize genius marches to the beat of its own tempo and art cannot be rushed. When possible, I may even be able to provide funding in the future if my crypto bets are right. I just want to help the world with whatever time and resources I'm given.

  • @ShuAbLe
    @ShuAbLe 2 หลายเดือนก่อน +7

    I think a video with a more in depth explanation of the built-in nodes or showing how they work would go a long way for me to make more sense at what you're doing, I get the general idea but it feels to abstract to me, I rewatched your first video couple of times and it stills feels to abstract. Maybe I'm just dum...

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +5

      I may do that soon actually, would be a good topic I could cover to free up some time for debugging of the prototype - since I don't have to do any research for that one, so it wouldn't take too much time. Maybe even split it up into two or three videos...
      the more I think about it, the more it seams like a good idea. I might do that after the executable stuff is done, thanks!

    • @ShuAbLe
      @ShuAbLe 2 หลายเดือนก่อน +2

      @@Kronark Hey, thanks for the answer, I will keep watching the series and best of luck in your project.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      Thanks mate :)

  • @JoaoPedro-ki7ct
    @JoaoPedro-ki7ct 2 หลายเดือนก่อน +2

    3:48 foreshadowing

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      hehe

  • @verdaderoken
    @verdaderoken 2 หลายเดือนก่อน +1

    Quality channel.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      Glad you think so! :)

  • @ewerybody
    @ewerybody 2 หลายเดือนก่อน

    Once these basics are covered (which almost never change) I guess this is going to be pretty exciting seeing the first programs being implemented :O

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Can‘t wait myself! It‘s already pretty neat to see the first „hello world“ working :D

  • @coffee-is-power
    @coffee-is-power 2 หลายเดือนก่อน +3

    Would be based if this was not Windows...

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +8

      I have to add support for my current desktop pc and the pcs of my university before anything else, since the first big project will be my masters thesis in computer graphics.
      Those all happen to be windows.

  • @darkfllame
    @darkfllame 2 หลายเดือนก่อน +6

    i didn't received the notification D;

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      yeah I figured something went wrong on youtube's end... this upload had a much slower start than the previous two weeks.

    • @darkfllame
      @darkfllame 2 หลายเดือนก่อน +1

      @@Kronark i disabled pratically all notifications on my phone tho (except system ones), they were too annoying...

  • @naitikmundra8511
    @naitikmundra8511 2 หลายเดือนก่อน +3

    This reminds me of Sebastian Lague. Really nice.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +2

      It's an honour to be likened to that legend!

  • @Zeus-hb3yn
    @Zeus-hb3yn 2 หลายเดือนก่อน +5

    This really gives insight into the the ultra low level stuff
    .
    PS: editing and ur voice is top notch

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Glad you think so! Thanks :)

  • @Samuka3000
    @Samuka3000 หลายเดือนก่อน

    I wish you were my teacher back in college!

    • @Kronark
      @Kronark  หลายเดือนก่อน +2

      It would‘ve been an honour, i‘m sure.

    • @Samuka3000
      @Samuka3000 หลายเดือนก่อน +1

      @@Kronark sensei!

  • @cringekitsune
    @cringekitsune 2 หลายเดือนก่อน +2

    This video feels pretty epic. The editing, the sound effects!

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Thanks! :)

  • @turtleDev32
    @turtleDev32 2 หลายเดือนก่อน

    Another great vid 🔥🔥🔥

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      thank you mate! :)

  • @deaneatsgreens
    @deaneatsgreens หลายเดือนก่อน

    Dang, windows has a LOT more weird variables in the background than I thought

    • @Kronark
      @Kronark  หลายเดือนก่อน

      jup, microsoft's commitment to legacy results in a lot of stuff the vast majority of users don't need. ^^

  • @Kraaven2026
    @Kraaven2026 2 หลายเดือนก่อน +1

    I wonder, will you be creating your own graphics API for this system, or would you recreate existing API's 1:1 in your node language as a testament to its power.

    • @Kraaven2026
      @Kraaven2026 2 หลายเดือนก่อน

      As Always, Beautiful Video. Will be rewatching the video a few times, so more questions or statements may come down the line 😅

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +2

      We‘ll be targetting the vulkan api for now, but obviously add some abstraction layers to make it a little less heavy :)
      So yeah, we‘ll implement the ABI for vulkan essentially :D
      And thanks! :)

  • @mtuto26
    @mtuto26 2 หลายเดือนก่อน +1

    All of this is very interesting,Will you publish the code,if so will it be open source.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +2

      Thanks!
      The code of the prototype probably won't be published, no. The release version will be built using the prototype though, and the node networks for that may be published. Either way, it will probably be under a restrictive licence instead of open source. Not giving this sh*t away for free to large companies, just for them to put a price-tag on it, which unfortunately happens all to often.

  • @DasBilligeAlien
    @DasBilligeAlien 2 หลายเดือนก่อน

    i don't understand much about code or math but i understand nodes. i think they are still criminally under utilized in most implementations.
    As a graphic designer and ui/ux designer i have a long list of stuff i would love to try to improve visibility, readability and the connections between nodes.
    Very curious how your project will develop.

    • @Kronark
      @Kronark  หลายเดือนก่อน

      We‘ll definitely be taking a look at node graph ui design enhancements further down the road, when we‘ve built the release product and the frontend is exchangeable :D

  • @flup4362
    @flup4362 2 หลายเดือนก่อน

    Neat!

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      cheers!

  • @kollpotato
    @kollpotato 2 หลายเดือนก่อน +2

    bro is cooking, but what exactly is he doing in these series? it feels like they are all out of context

    • @stefanalecu9532
      @stefanalecu9532 2 หลายเดือนก่อน

      See the first video in the series for more context. Basically, imagine you're programming using nodes like you'd have in Blender or Godot. The end goal is for the author to use it in his thesis about lighting

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      It'll all make sense soon, I hope! :)
      @stefanalecu9532 already said everything else :D

  • @darkfllame
    @darkfllame 2 หลายเดือนก่อน +1

    I have a quick question: how will we be able to represent code, i mean, your entire language is just an "interpreted language that write bytes to a file", how will we be able to represents things like control flow statement, function, variables manipulation ? This is a dumb yet good question to ask, because a language is used because it's practical in "some" aspects (*cough* rust) and honestly, as bad as i would like to have that much power on how my program is built, having a headache while using that compiler will be an issue. Maybe i didn't understood correctly the first video but i'm hyped for the next ones :D

    • @sillythewanderer4221
      @sillythewanderer4221 2 หลายเดือนก่อน

      My understanding is that if this system is Turing complete, then a user of this program could define all of those things you mention.
      I expect that when this is done there will be a “standard library” that will have many typical features implemented.
      This project is interesting and I hope the dev gets it all figured out.

    • @darkfllame
      @darkfllame 2 หลายเดือนก่อน +1

      @@sillythewanderer4221 I think he will eventually explain in details the language when it gets released to the public, anyway the project is colossal work so iwould give it at least a years before a release and a stable version...

    • @borstenpinsel
      @borstenpinsel 2 หลายเดือนก่อน +1

      If you wish to make an apple pie from scratch, you must first invent the universe. - Carl Sagan
      This guy is doing just that. Basically writing their own Assembler. This is lower than C. And way lower than C++ and Java or any modern language.
      The concept of a function doesn't exist in machine code or asm. A while loop doesn't exist. Objects and methods and arrays don't exist. All of that needs to be written/implemented first. C does this and many other languages rely on C (that is to say, the code is translated to C and then gcc is used to compile to machine code). Other languages translate to asm directly.
      And this language which is being built here even skips that step and compiles to machine code directly, or that's the intention it seems. Wild stuff 😅

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      jup, that's exactly what I'm planning on doing. all the abstraction layers we'll be building throughout the next years will be shipped with the release build - anything else will be downloadable as needed via my website eventually. so any user of the release build won't need to touch any of this complexity if they don't want to, but they could do so any time.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      I'd probably give it at least 2 years to be honest. It's going to take another 6 months minimum until I've ironed out every single little detail and made this prototype stable. But then I'm definitely going to take a bit of a break from compiler design and do some fun graphics stuff for a while. We'll eventually implement that release build in a small series on this channel though, using the prototype!

  • @emptydata-xf7ps
    @emptydata-xf7ps 2 หลายเดือนก่อน

    Ok its wednesday the 28th you can upload the next episode now!

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      oh sh*t! How did I miss an entire week?!

  • @oglothenerd
    @oglothenerd 2 หลายเดือนก่อน +1

    ELF is the most based format.

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      true, but ELF doesn't run on windows as far as I know, and I need to target windows for my masters.

  • @theevilcottonball
    @theevilcottonball 2 หลายเดือนก่อน +2

    Did you use the structure definitions in winnt.h?

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      I think the resource I was using to mostly understand this whole thing was using them, I just cleaned it up a bit - so I suppose indirectly, yes.

  • @asteriskman
    @asteriskman 2 หลายเดือนก่อน +1

    do you show anywhere what the so-far-defined 'atomic' nodes are in your system?

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      previous videos cover some of the atomics a bit, but the next videos will cover them in more detail, as by popular request :)

  • @manuelsuarez7521
    @manuelsuarez7521 2 หลายเดือนก่อน

    cool!

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      You haven't even watched it yet :P

    • @theevilcottonball
      @theevilcottonball 2 หลายเดือนก่อน +2

      He watched at 200x speed.

  • @edems131
    @edems131 2 หลายเดือนก่อน

  • @JNJNRobin1337
    @JNJNRobin1337 2 หลายเดือนก่อน +1

    so, can we call these PEX Files?

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      I don't get it... ^^ Why PEX?

    • @JNJNRobin1337
      @JNJNRobin1337 2 หลายเดือนก่อน

      @@Kronark i dont know, since executables were called EXE files probably

  • @elijaht5188
    @elijaht5188 2 หลายเดือนก่อน

    anyone understand what's going on?

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      You might need to check out the other videos :)

    • @elijaht5188
      @elijaht5188 2 หลายเดือนก่อน

      @@Kronark is it that you're making a programable complier. Or the user tells the complier what to do manually

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      I think „programmable compiler“ summarises it quite neatly actually :)

    • @elijaht5188
      @elijaht5188 2 หลายเดือนก่อน

      @@Kronark OK, so it's a programmable compiler but can be used at upper levels not just the compile level, because you'll be using the whole thing like an os to make games and it's also all In machine code?

    • @Kronark
      @Kronark  2 หลายเดือนก่อน +1

      It‘s designed for the construction of a significant amount of abstraction layers on top of each other, allowing for high level programming while still providing access to low level implementations. The day to day usage will be similar to standard programming and every now and then some optimisations can be implemented on lower levels to make those high level abstraction as efficient as possible.

  • @DragonJT-jp6xv
    @DragonJT-jp6xv 2 หลายเดือนก่อน

    Can you actually show your program running?

    • @Kronark
      @Kronark  2 หลายเดือนก่อน

      Maybe I‘ll upload a gif or screen recording via a community post soon-ish. Don‘t think there‘s a point in making a video of „look at me shoving nodes around“ :)