What is the Smallest Possible .EXE?

Поделиться
HTML-код
  • Опубликовано: 28 сен 2024
  • To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/... . You’ll also get 20% off an annual premium subscription.
    What is the smallest possible EXE that can be run on the Windows Operating System? What about the largest possible EXE? What even is an EXE file? On Windows, EXE files use the Portable Executable file format, which contains the program's code, data, and references to other libraries that can be loaded and run by the OS. It is often referred to as an "Image", the captured state of the program in a form ready to be run by the system.
    After testing it was found that the smallest EXE on 64-bit Windows is 268 bytes. This is a system limitation and not a limit with the Portable Executable file format itself. The smallest EXE runnable by other versions of Windows are as follows:
    Windows XP: 97 bytes
    Windows 2000: 133 bytes
    Windows Vista/7 (32-bit): 252 bytes
    Windows 7/10/11 (64-bit): 268 bytes
    The largest EXE possible is 1,996,488,704 bytes. Again, this size is a limitation with Windows.
    GitHub project containing 268 byte EXE, world's smallest game, and world's smallest piano:
    github.com/Ink...
    About the PE file format:
    PE file format: learn.microsof...
    PE file diagram: github.com/cor...
    Making Small EXE:
    Original research into smallest possible EXE: archive.is/w01DO
    World's Smallest Windows App (Dave's Garage): • C vs ASM: Making the W...
    Tiny PE on Windows 10 (x64): github.com/aya...
    More on the 268 byte limit: gist.github.co...
    Refined MattKC snake: github.com/Eim...
    Low Level Programming:
    Kernel32 functions: www.geoffchapp...
    Windows Virtual Terminal Sequences: learn.microsof...
    MSVC Linker options: learn.microsof...
    What is the largest EXE: superuser.com/...
    This video is sponsored by Brilliant

Комментарии • 918

  • @InkboxSoftware
    @InkboxSoftware  3 месяца назад +99

    To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/Inkbox/ . You’ll also get 20% off an annual premium subscription.

    • @Pawlo370
      @Pawlo370 3 месяца назад +7

      3:46

    • @AWIRE_onpc
      @AWIRE_onpc 3 месяца назад +8

      no

    • @IT10T
      @IT10T 3 месяца назад +1

      How does Brilliant afford to sponsor so many channels, who is paying all that for some information that is already publicly available? And why?

    • @EalaFreond
      @EalaFreond 3 месяца назад +3

      brilliant along with most other sponsors email them a script made to sound better than youtube and stuff which intrigues people

    • @USERNAMEteammmw
      @USERNAMEteammmw 3 месяца назад

      Shove that brilliant up your a‌‌‌s‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌s

  • @shortcat
    @shortcat 3 месяца назад +1805

    "I’m not sure typing simulator would become a best seller on Steam."
    You'd be surprised what's taking over Steam tops these days...

    • @cerulity32k
      @cerulity32k 3 месяца назад +159

      banana

    • @pepsiman9093
      @pepsiman9093 3 месяца назад +71

      banana

    • @blarghblargh
      @blarghblargh 3 месяца назад +41

      terracotta

    • @mjdevlog
      @mjdevlog 3 месяца назад +35

      banana click simulator?

    • @pepsiman9093
      @pepsiman9093 3 месяца назад

      @@mjdevlog yeah, it basically just exists to make money off the item trading system on steam

  • @DavesGarage
    @DavesGarage 3 месяца назад +124

    Great video! I never considered what the *largest* would be! Now I know :-)

    • @InkboxSoftware
      @InkboxSoftware  3 месяца назад +36

      Thanks for giving it a watch, it means a lot coming from you.

    • @kipchickensout
      @kipchickensout 2 месяца назад +7

      I was confused when I saw the video in my feed, thinking it would be basically the same as your video, but I love how this one explains everything visually! Kudos to you both

  • @KvapuJanjalia
    @KvapuJanjalia 3 месяца назад +52

    If I remember correctly, if you disable ASLR, you can simply jump to Win32 API function addresses. This will eliminate some strings in IMPORTS section of a PE file.
    I haven't tried it myself.

  • @RochesterX
    @RochesterX 3 месяца назад +7

    2:55 - Who knew Plato was a Linux fan?

  • @KLegyyn
    @KLegyyn 3 месяца назад +22

    You brought me back in time to my computer science days, making games on console applications.
    .
    Those were the simplest of days.
    .
    Thank God I still have them.
    .
    .

  • @HedgehogGolf
    @HedgehogGolf 3 месяца назад +4

    0:26 sneaking in your mailing list is a genius move lol

  • @MasterGeekMX
    @MasterGeekMX 2 месяца назад +2

    I once saw a question on reddit asking why you can't make the same executable file for Linux and Windows.
    The answer: see the first half of this video and then one about the ELF format to understand it.

  • @km077
    @km077 3 месяца назад +1

    *fun fact:* Registers: EDI, ESP, EBI and EFL could be used to power a RNG with some multiplications and/or additions. Some of them change to a pretty unique value only at start-up and then increment as the program is running, but others could be used to get multiple equally dispersed pseudo-random numbers.

  • @Harvey-b2j
    @Harvey-b2j 29 дней назад +2

    Sometimes by losing a battle you find a new way to win the war.

  • @RobinLeGaming
    @RobinLeGaming 3 месяца назад +3

    EXE doesn't actually indicate a PE file.
    It may contain an early MS-DOS MZ, an MS-DOS 4.0 New Executable or a modern Portable Executable.

    • @larkuser
      @larkuser 19 дней назад

      and also the LE and LX from Windows VxD services and Microsoft OS/2 2.0

  • @bradl7439
    @bradl7439 3 месяца назад +1

    In practical terms, the smallest .exe file you can have is the cluster size the FAT uses on the storage device you're using. Assuming you saved your work that is.

  • @Matthew_Lawless
    @Matthew_Lawless Месяц назад +3

    ...do you have a homemade smartwatch?

  • @roax206
    @roax206 2 месяца назад

    Why does making the most convoluted GUI in Windows assembly seem simpler and probably more reliable than the simplest installation tutorial for any C++ based GUI library I've seen.

  • @lpyibm5333
    @lpyibm5333 3 месяца назад +3

    正津津有味看视频的时候突然蹦出来一个汉字,给我整恍惚了

    • @lpyibm5333
      @lpyibm5333 3 месяца назад +1

      看起来老哥你是真喜欢简中,关注了,加油!

  • @MonochromeWench
    @MonochromeWench 3 месяца назад +4

    linking an extra dll just for a rng is costing a lot of space. Ok not really a lot but you can do better. It would be smaller to implement a LFSR rng using a seed value from whatever source you can get that you're already have access to. A Console handle is probably good enough to use as a seed for a LFSR. The Handle values are likely going to be unique every time you run the exe though not guaranteed, the chances you'd get repeated Handle values are extremely unlikely. Or you can just go straight to using a cpu random instruction but you lose compatibility with old cpus.

  • @omgboy4939
    @omgboy4939 3 месяца назад +18

    what is the smallest possible elf64?

    • @aspectreishauntingeurope
      @aspectreishauntingeurope 3 месяца назад +5

      (btw the result turns out to be 45 bytes)

    • @aspectreishauntingeurope
      @aspectreishauntingeurope 3 месяца назад +6

      it seems youtube deleted my reply so let's try it again...
      even though it's about elf32, I'd highly recommend the famous essay "A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux"

    • @cirkulx
      @cirkulx 3 месяца назад

      i think using a header someone i know made and assembling asm -> elf64 it was 40 or smth

    • @asdfghyter
      @asdfghyter 3 месяца назад

      @@aspectreishauntingeurope that's way smaller than I expected!

  • @tcscomment
    @tcscomment 3 месяца назад +2

    I appreciated the SID music, I see you like Rob Hubbard :)

  • @provod_
    @provod_ 2 месяца назад

    Though not windows PE, the smallest reasonable game that I know of is Shifticida by Rrrola. It's a competitive split screen multiplayer in just 32 bytes COM file for MS-DOS.

  • @hc4633
    @hc4633 3 месяца назад +5

    nice mix of humor and knowledge, good stuff

  • @Saru-Dono
    @Saru-Dono 3 месяца назад +52

    We really need Dave on this one

    • @graealex
      @graealex 3 месяца назад +5

      Yes, let's bring in the tone-deaf boomer millionaire. He'll solve our problems.

    • @Saru-Dono
      @Saru-Dono 3 месяца назад +12

      @@graealex Well, he kinda knows Windows, so he may be a good fit to explain Windows executables

    • @skycaptain95
      @skycaptain95 3 месяца назад

      This is not some esoteric boomer multimillionaire knowledge ​@@Saru-Dono

    • @graealex
      @graealex 3 месяца назад

      @@Saru-Dono He knows task manager. There are far more competent people still around in regards to WINAPI.

    • @cerulity32k
      @cerulity32k 3 месяца назад

      ​​@@graealexhe developed windows... he made fucking task manager and zip... *_he probably knows a lot about executable files._*

  • @il-dottore
    @il-dottore 3 месяца назад +1

    06:43 YOOO GUN NAC OST!!!
    But anyways, very impressive
    I didn't know they added some ANSI stuff back in, considering how ass BBSes look with MS Telnet Client

  • @АнтонВеточкин-с2ы
    @АнтонВеточкин-с2ы Месяц назад

    I wish more modern developers thought about such optimisation. At least some optimisation actually

  • @darknessblades
    @darknessblades 3 месяца назад

    0:14
    I use DUMMY,EXE files for my GPU's underclocking profiles.
    I make sure to TRIPPLE protect them, so only admin accounts can edit or change the exe.
    even the folder which they are located in is locked/write protected. and everything is in read only,
    even by default they are hidden files. so regular scrapers will overlook them

  • @OzzFan1000
    @OzzFan1000 3 месяца назад +15

    That comment about every Windows executable having the same DOS header isn't true. You could specify an actual MS-DOS application as the header and create a dual-mode application. The same .EXE when run under DOS would run only the DOS "header" portion, while when run from Windows would skip over the DOS header and execute the Windows code.
    Many applications used to do this back in the day - and I've even created a few myself!

    • @InkboxSoftware
      @InkboxSoftware  3 месяца назад +9

      That's true, and that's why it has an MS-DOS header in the first place. It's just nowadays your standard compiler will fill in the string "This program cannot be run in DOS mode" automatically.

    • @rashidisw
      @rashidisw 3 месяца назад +7

      Older compiler uses slightly different string "This program requires Microsoft Windows".

    • @throwaway6478
      @throwaway6478 3 месяца назад +2

      @@rashidisw And certain versions of Delphi had a DOS stub that printed "This program must be run under Win32."

  • @minirop
    @minirop 3 месяца назад +3

    would you save some space if you used RDRAND or RDSEED instead for the RNG?

  • @MalalRebooted
    @MalalRebooted 2 месяца назад

    Smallest EXE I wrote was a SOCKS4 proxy coming in at 2Kb. Also, interesting use of old SID tunes.

  • @eavids128
    @eavids128 2 месяца назад +1

    How were you calling functions from the windows api? Wondering cause there are some really, really small ways to do it

    • @eavids128
      @eavids128 2 месяца назад

      Ah I assume crinkler is doing the shellcode techniques i'm thinking of

  • @totallyunoriginalusername
    @totallyunoriginalusername 2 месяца назад

    7:54 Seeing as the smallest game I've heard of is 96 bytes, I'm curious how small you're going to be able to get it.

  • @jovetj
    @jovetj 3 месяца назад +2

    You can pronounce ANSI as "ANN-see".
    Windows consoles are not "ASCII."

  • @TheSulross
    @TheSulross 3 месяца назад

    People want to say the MOS 6502 is the first RISC processor, yet it gratuitously waste transistors on BCD (ugh!)

  • @AriesEugene
    @AriesEugene 29 дней назад +2

    There are people who have money and people who are rich.

  • @cricri593
    @cricri593 3 месяца назад

    I remember in the dos there was an exe compressor which made them small
    0 headers filled with 0 and almost impossible to disassemble but it worked without being uncompressed

  • @richetherapperinductionsol9155
    @richetherapperinductionsol9155 2 месяца назад

    Finally an exe without all the bloat

  • @HupfderFloh
    @HupfderFloh 2 месяца назад

    So you're a Windows expert? Name every .exe then.

  • @3_minute_gaming
    @3_minute_gaming 2 месяца назад

    Wow. Really good.
    Bonus points for an atla refrence !

  • @rafamigayt
    @rafamigayt 2 месяца назад

    Kudos for the International Karate music in the background. 8^)

  • @HappyBeezerStudios
    @HappyBeezerStudios 9 дней назад

    I wonder if it would be cheating to have most of the code in an external file. Like having the exe itself just the minimum to call a much bigger file that has all the code in it.
    I mean, I made a program that is 25846 bytes and does nothing but display a 20 character text string in it's window and the header.
    Not sure about 268 bytes, but there are boot sector games that fit into a 512 byte floppy boot sector. Those include conversions of Tetris, Pac-Man, Flappy Bird, Space Invaders, Breakout, and even a full on roguelike and a Doom clone.
    Hmm, would it be possible to shrink the program by directly coding in CPU internal µops? Because since the mid 90s all x86 CPUs are internally RISC-like and translate x86 instructions into µops.

  • @omegahaxors9-11
    @omegahaxors9-11 3 месяца назад

    The smallest possible exe is one containing only the phrase "This program cannot be run in DOS mode"

  • @TrevorVonSeggern
    @TrevorVonSeggern 3 месяца назад

    I would love to see something similar on the linux side of things. Great work btw, fun video!

  • @antonio4055
    @antonio4055 2 месяца назад

    Love the Links Awakening music ❤️

  • @dreadmn
    @dreadmn Месяц назад

    RUclips have been recomending this for the last month, finally i surrender, congrats wining the algorithm

  • @kailashkatheth1871
    @kailashkatheth1871 3 месяца назад

    this guy is good friend with so many things

  • @qwertyiuwg4uwtwthn
    @qwertyiuwg4uwtwthn 2 месяца назад

    *sonic.exe taking notes because he needs too lose weight*

  • @gordon3178
    @gordon3178 2 месяца назад

    An exe file is just the same as a home computer cassette tapee

  • @thiesenf
    @thiesenf 3 месяца назад +2

    32 byte on a C64... it won't do anything usefull... but it will execute code.
    Here's a 256 byte intro for the C64 with "music"... ruclips.net/video/sWblpsLZ-O8/видео.html

    • @dottedboxguy
      @dottedboxguy 3 месяца назад

      yeah, demoscene is cool. and that with a little bit of research i found a 256 bytes game for ms-dos called q-type:2 on pouet, and that there's a real game for real windows that's like 96KB with 3D and real game mechanics called kkrieger, i recommend you give it a try cuz it's pretty cool

  • @БАНецк
    @БАНецк 2 месяца назад

    NOT THE ASCII SHRUB NOOOOOOOOOOO

  • @shallowfrost
    @shallowfrost 2 месяца назад

    bro could have literally made a cookie clicker sim

  • @nightswitchmusic
    @nightswitchmusic 3 месяца назад

    i wanna mess around with the piano exe lol

  • @goeypants.
    @goeypants. 3 месяца назад

    this is still more of a game than sol's rng

  • @araghon007
    @araghon007 3 месяца назад +794

    When I started watching, I somehow only expected the usual "overlapping the DOS and PE headers" and hello world message box, didn't expect you to enter the

    • @TheSulross
      @TheSulross 3 месяца назад +29

      Clearly the video failed hugely on its stated objective to create smallest possible .EXE. Have to give a grade of F for that reason.

    • @128Gigabytes
      @128Gigabytes 2 месяца назад +44

      @@TheSulross thats stupid, he found out how small it could be and then went on to, after answering the question, making something else related to the same topic, which again happened after answering the main question

    • @RoganGunn
      @RoganGunn 2 месяца назад +10

      @@128Gigabytes Sarcasm detection failure detected 👀😁

    • @sonicSnap
      @sonicSnap Месяц назад +2

      @@RoganGunn it very clearly isn't sarcasm based on context clues

    • @timmygilbert4102
      @timmygilbert4102 Месяц назад +1

      F is the highest grade in the hexadecimal scale ⚖️ 😂

  • @JJFX-
    @JJFX- 3 месяца назад +202

    Fun fact: That "MZ" required at the beginning of the header stands for Mark Zbikowski, who is credited with creating the .exe file format at Microsoft.

    • @RvnKnight
      @RvnKnight Месяц назад +1

      Yep, but sadly most IT/Is people never learn it unless they have the right class and right instructors.

    • @JJFX-
      @JJFX- Месяц назад +4

      @@RvnKnight Well I've taken no such official classes. Just an obsessive need to learn the 'why' as much as the 'how' and whatever experience comes from having to find my own way through this never-ending cave.

    • @RvnKnight
      @RvnKnight Месяц назад

      @@JJFX- Hence 'most*, not 'all'.

    • @delphicdescant
      @delphicdescant 14 дней назад +2

      @@RvnKnight I don't think it's that sad that people aren't aware of the MZ standing for Mike Wazowski. It's pretty much the most useless trivia imaginable.

    • @RvnKnight
      @RvnKnight 14 дней назад +1

      @@delphicdescant That's your opinion and you are entitled to it.

  • @darkarchon
    @darkarchon 3 месяца назад +2048

    Just to be pedantic, the first file isn't actually 0 bytes. But its contents are!

    • @HeyImSolace
      @HeyImSolace 3 месяца назад +153

      But the file is nothing but its contents. Unless you're considering the directory entry of the file system part of the file, in which case you would also need to consider the filename and all the files metadata part of it. To my knowledge it isn't though. Directory structure is kept completely separate from file contents

    • @mars5train601
      @mars5train601 3 месяца назад +275

      ​@@HeyImSolaceFiles on your computer are stored with overhead. Some tools will tell you your file has a size of x bytes, and a size on disk of y bytes.
      This difference will exist even if the contents are 0bytes, since usually the system reserves a section of disk for it.
      This difference is op's 'being pedantic'

    • @albi2k88
      @albi2k88 3 месяца назад +16

      O Archon się tu zjawił.

    • @HeyImSolace
      @HeyImSolace 3 месяца назад +49

      @@mars5train601 I know that this overhead exists, but this overhead is not part of the file. This is like saying a Google search result is part of a Website. It takes up space, but it's not part of the website itself, it merely shows some data of it (Title and a little preview) and points to where it is (its web address).

    • @qwerty11111122
      @qwerty11111122 3 месяца назад +14

      ​@HeyImSolace nah, thats the difference in memory vs storage.
      The file's metadata in the inode table has a minimum size. In windows ntfs (from googling), the equivalent looks to be the mft record, which clocks in at 1kb or 2 512B ssd sectors.

  • @AlexTrusk91
    @AlexTrusk91 2 месяца назад +235

    I once talked to the kernel directly.
    Now I got a lifetime supply of chicken wings.

    • @timmygilbert4102
      @timmygilbert4102 Месяц назад +2

      Something is not right because it should have given you pop corn 🌽🍿😮

    • @wbat5816
      @wbat5816 Месяц назад

      Why is your PFP Person... sideways...?

    • @JulieLetoile
      @JulieLetoile 15 дней назад +1

      🏃‍♀️‍➡️🏃‍♀️‍➡️🏃‍♀️‍➡️➡️➡️➡️

    • @wbat5816
      @wbat5816 15 дней назад

      @@JulieLetoile Gotta RunRunRunRunRunRRRRRRRRRRRRRR
      𓊖 Emojitranslator.exe has stopped unexpectedly.

  • @qwerty11111122
    @qwerty11111122 3 месяца назад +734

    17:46 bad video for security. Now the number of executables is finite and we can brute force through all of the 2^2^34 executables to find all of the penetration vectors.

    • @lunabell-2
      @lunabell-2 3 месяца назад +77

      only for windows. unix/linux-based systems are still safe (but for how long?)

    • @v84l42
      @v84l42 3 месяца назад +1

      huh?

    • @samuelthecamel
      @samuelthecamel 3 месяца назад +170

      Good idea. I'm sure this calculation will complete before the heat death of the universe

    • @SG_01
      @SG_01 3 месяца назад +72

      While you're at it, you can figure out all the valid versions of Doom are in there ^^

    • @yigawaffle
      @yigawaffle 3 месяца назад +6

      @@samuelthecamel Well, it probably would. As technological advancements are constantly happening, once we have, per say, consumer-grade quantum computers, we just write the program, sit back, and enjoy.

  • @technikschaf1574
    @technikschaf1574 2 месяца назад +100

    The smallest piano having 555 Bytes, "like" THE one IC used for making simple sounds, the one and only NE555... That's just awesome and it cant be a coincidence

    • @lizardswithhats
      @lizardswithhats 2 месяца назад +8

      I thought the same thing lmao

    • @ping_th
      @ping_th 2 месяца назад +1

      I don’t understand your technical, so you mean like make a file that run beep/ small sound?

    • @technikschaf1574
      @technikschaf1574 2 месяца назад +10

      @@ping_th the NE555 is a small IC (integrated Circuit) / Chip used in electronic devices for timing/clock signal (and more) purposes. This chip (and its clones) are probably the most used IC for such stuff. It is so easy to use and cheap and widely used it became synonymous for this kind of usecase. Since any note you can play is nothing more than a sine wave with a specific frequency and the NE555 can easily produce such frequency you can use this chip to build a small piano (ignoring it not producing sine waves but square waves you then have to filter)

    • @HappyBeezerStudios
      @HappyBeezerStudios 9 дней назад

      If he manages to shrink that by another 45 bytes, it'll fit into a boot sector and will clearly kick pac-man and doom from the most popular choices.

  • @thomquiri9860
    @thomquiri9860 3 месяца назад +366

    1:15 nice integer overflow lmao

    • @HasanGaming482
      @HasanGaming482 3 месяца назад

      idiots who dont know freaking a bit of coding arent allowed

  • @SomethingCatchy2_
    @SomethingCatchy2_ 3 месяца назад +286

    I was exspecting this to just be a deep dive in to how small an exe can be, then he just made a game, this is amazing

  • @powerpc6037
    @powerpc6037 3 месяца назад +46

    I remember having an exe file on my Amiga which was only 56 bytes in size: "reboot". This in fact rebooted the Amiga computer when you executed it.

    • @stalker32041
      @stalker32041 2 месяца назад +2

      I don't checked size of linux "reboot" program...

    • @neoney
      @neoney 2 месяца назад

      ​@@stalker32041its a symlink to systemctl if on systemd

    • @RWBHere
      @RWBHere Месяц назад +1

      @@stalker32041 Fifteen characters, 'shutdown -r now' is enough to do that, as root, from the Command Line.

  • @pielover267
    @pielover267 3 месяца назад +81

    5:17 wait a sec, wait a sec, does every windows executable really contain ASCII art of a shrub by default? I'm tempted to assume that was a joke so you would have something to rhyme, but honestly I'm hoping that it's true because that would be a hilarious and genuinely beautiful absurdity.

    • @Levi_OP
      @Levi_OP 3 месяца назад +19

      Just a joke :-)

    • @avantesma1
      @avantesma1 2 месяца назад +8

      This would be a software equivalent of those dudes etching Milhouse in the corners of their microchips.

  • @filker0
    @filker0 3 месяца назад +28

    Fun video.
    ANSI (usually spoken as "ahn-see") control sequence originated with the Digital Equipment Corporation VT100. The SGR (Set Graphic Rendition) sequence was extended in "ANSI.SYS" on DOS to allow setting foreground and background colors. The glyphs the video shows beyond the ASCII characters are the VT100 graphics set, so the same program game would work using a serial port connected to a VT100+ terminal emulator that supported the color extension.
    The flickering could be reduced by only redrawing the bottom row except as the meteors shift down. Using save cursor and restore cursor sequences could improve keeping the little house's position from flickering. This will take more code code, of course.

    • @JJFX-
      @JJFX- 3 месяца назад +1

      Yeah and similar usage of ANSI is also great for anyone who enjoys torturing themselves making unnecessarily complicated batch files. Using it to clear lines and restore cursor positions instead of simply clearing it is much more pleasant and opens up some cool possibilities that wouldn't be possible (or practical) otherwise.

    • @rosiefay7283
      @rosiefay7283 2 месяца назад +2

      *usually pronounced an-see

    • @HappyBeezerStudios
      @HappyBeezerStudios 9 дней назад

      @@JJFX- as someone who has made unnecessarily complicated batch files, I appreciate all methods that make it less complicated, because that allows me to add more stuff.

    • @JJFX-
      @JJFX- 9 дней назад

      @@HappyBeezerStudios It can simplify things but can become a headache to decipher later unless you mask repeated commands as vars. Aside from totally necessary colors and animations I mostly find it useful for advanced menu navigation, the ability to display information underneath an input line, temporarily replacing an invalid input with text, etc...

  • @blarghblargh
    @blarghblargh 3 месяца назад +167

    Back in the day, we called it "Anne See" (like "antsy" with a silent "t"). not "Ay En Ess Eye"

    • @yourcomputerhasdied
      @yourcomputerhasdied 3 месяца назад +67

      it's the superior way to pronounce it. less syllables and easier to say. I've heard some people say ASCII one letter at a time, one of the worst experiences of my life

    • @blarghblargh
      @blarghblargh 3 месяца назад +16

      @@yourcomputerhasdied you poor soul. Stay strong!

    • @voxvolhynia5400
      @voxvolhynia5400 3 месяца назад +7

      @@yourcomputerhasdied Laugh out loud, what a waste of time.

    • @rhysbaker2595
      @rhysbaker2595 3 месяца назад +2

      In fairness, he might have never heard anyone say it 🤷🏻‍♂️

    • @mewity
      @mewity 3 месяца назад

      I pronounce it "ayensi"

  • @shallex5744
    @shallex5744 3 месяца назад +59

    10:56 those aren't actually ASCII characters (except for the @)
    ASCII is only a 7-bit encoding, and thus only contains 127 characters. anything beyond that into the 8-bit realm is a vendor-specific extension beyond ASCII

    • @sttate
      @sttate 3 месяца назад +1

      Where's the 128th value?

    • @shallex5744
      @shallex5744 3 месяца назад +8

      @@sttate the 128th value is the number 127. the 1st value is the number 0

    • @mjouwbuis
      @mjouwbuis 3 месяца назад

      @@shallex5744 not only the value (not number) 0, but also the NULL byte. Sometimes used as a string terminator so not exactly a character, but if you think of the other control characters as a character, it can be argued that NULL is also one, which makes a total of 128 characters. Also, back in the day the remaining 128 values used to be known as high-ASCII which were more or less vendor or machine specific. Later they became code pages which were more or less standardised.

    • @marsovac
      @marsovac 2 месяца назад +2

      If you actually look at the image that you complain about, you first notice there are 16 rows with 8 columns, which excluding the NULL character makes for 127 characters. Then you notice that columns have 3 bits and rows 4 bits. Which is exactly 7 bits. And then you notice that those are precisely the ASCII characters.

    • @shallex5744
      @shallex5744 2 месяца назад +4

      @@marsovac i wasn't focused on the image, i was referring to him suggesting that the house and the horseshoe-looking thing were ASCII characters

  • @IamNerfDart
    @IamNerfDart 2 месяца назад +8

    Someone mention MattKC his QR code game could get an upgrade

  • @nomenmasi8964
    @nomenmasi8964 3 месяца назад +23

    I just wonder why you used the song "There is no new China if there is no Chinese Communist Party" as the BGM for the (allegedly) Microsoft footage
    ♪mayor gone cheddar though mayor syndrome gore
    ♪mayor gone cheddar though mayor syndrome gore
    ♪gone cheddar, ...

    • @karehaqt
      @karehaqt 3 месяца назад +7

      It could be the Taiwanese version, "Only Without the Communist Party, Will There Be a New China!".

    • @hagen-p
      @hagen-p 3 месяца назад +1

      Maybe to avoid problems for using copyrighted music?

    • @senatuspopulusqueromanum
      @senatuspopulusqueromanum 3 месяца назад

      i was hoping i wasnt the only person that noticed

    • @VonVikoGoat
      @VonVikoGoat 14 дней назад

      the song makes the video better.

  • @EscapedShadows
    @EscapedShadows 2 месяца назад +82

    11:58 „And that works twice as well as I expected“ Best line every

  • @ArthurKhazbs
    @ArthurKhazbs 2 месяца назад +8

    "What is the largest possible EXE?" (Proceeds to develop an Electron application.)

  • @thewelder3538
    @thewelder3538 3 месяца назад +13

    Just as a comment here, you don't want to do things like cmp al, 0. The reason is simple. You're comparing an immediate value and that value has to be stored in the instruction. Since you're only interested in the flags, you should test al, al whereby the assembly doesn't need to store the immediate value and it will set the flags for you to branch against.

    • @InkboxSoftware
      @InkboxSoftware  3 месяца назад +7

      Thanks, I had forgot about TEST, looks like I can shave off a few more bytes

    • @thewelder3538
      @thewelder3538 3 месяца назад +5

      @@InkboxSoftware Well when you've done as much assembly as I have and enter 4k/64k demo competitions at Revision and other parties, every byte does indeed matter!
      Good video though.

  • @godwin972
    @godwin972 Месяц назад +3

    for anyone wondering, the character at 4:06 is "嗯", which (according to Wiktionary) is a Chinese character that can mean doubt, curiosity, surprise, agreement, "pledge", or just onomatopoeia for groaning.

    • @HappyBeezerStudios
      @HappyBeezerStudios 9 дней назад

      So in general the reaction of the programmer after the program starts and displays the message.
      All of that.

  • @Felice_Enellen
    @Felice_Enellen 2 месяца назад +13

    One thing about compressors like crinkler is that you'll always have the potential hazard of the output executable being detected as possible malware. Most AV is leery of anything that looks like it's compressed, since it's a common way to hide telling features of the executable.

    • @RainDownpours
      @RainDownpours 2 месяца назад +6

      Ah, that's why windows defender detects it as a trojan.

    • @mkstffwthstff
      @mkstffwthstff 2 месяца назад

      ​​@@RainDownpours I got that too

  • @etaoinwu
    @etaoinwu 3 месяца назад +15

    that 嗯 got me laughing so hard in the binary selection part

  • @Dr-Zed
    @Dr-Zed 3 месяца назад +72

    Demoscene members being chads as always. Crinkler is one of my favorite tools, so cursed yet so elegant.

    • @stgigamovement
      @stgigamovement 3 месяца назад +10

      Another demoscene-friendly language is JS. In my experience, it's quite versatile. Stuff like fitting a game that was 30,000 bytes into 3,081 bytes. People have also made 140-character JS programs back in the olden days of X/Twitter when there was a hard 140 character limit.

    • @blarghblargh
      @blarghblargh 3 месяца назад +7

      @@stgigamovement sounds more like code golf.
      does the demoscene want or care about JS?

    • @stgigamovement
      @stgigamovement 3 месяца назад +1

      @@blarghblargh there's a section on Demozoo and Pouet for Javascript demoscene works, which I've used.

    • @eter9nitysslut131
      @eter9nitysslut131 3 месяца назад

      @@stgigamovement i mean you need the runtime to go with it lol so not really demosccene

    • @Roomsaver
      @Roomsaver 3 месяца назад +4

      @@stgigamovementThat’s code golf, you still need an interpreter for JS

  • @OlegDorbitt
    @OlegDorbitt 2 месяца назад +13

    14:04 big thumbs up for CISC, without it we wouldn't have such gems as "AAA" and "PUNPCKHQDQ"

  • @andrew_ray
    @andrew_ray 3 месяца назад +15

    With the parameters now all in place, we can build Jorge Luis Borges' library of Babel, but for exe files. Since there's a limit to the number of bytes that can go in an exe and a finite number of values each byte can have, we can imagine a filesystem the contains every possible exe file. But it couldn't be a Windows filesystem.

    • @InkboxSoftware
      @InkboxSoftware  3 месяца назад +9

      Here you go: github.com/InkboxSoftware/DatabaseOfDamascus

  • @MangoPango1973
    @MangoPango1973 2 месяца назад +12

    Nearly 40 years ago, my first Computer was an Amstrad / Schneider CPC 464. I bought a monthly magazine which featured type in programs, back then called listings and there was always the 1kb program section, containing fantastic tools and full games with sound, colour graphics and joystick controls. I remember several Space Invaders clones, Shoot'em Ups, Racing and Puzzle games and an absolutely awesome Fractal generator, everything less than 1kb in Locomotive Basic and less than one page in the magazine.

    • @HappyBeezerStudios
      @HappyBeezerStudios 9 дней назад

      Back in the day before magazines had download codes. Or DVDs. Or CDs. Or floppies.
      No, they printed the code directly and you had to type it in manually.

  • @mrjson3039
    @mrjson3039 3 месяца назад +97

    Dude... Dealing with microsoft's documentation practoces, that's the challenge I saw. Amazing work of art

    • @JJFX-
      @JJFX- 3 месяца назад +5

      Most useful usage of chatgpt for me when coding is simply to have it return documentation info...... and then hope it doesn't decide to just make something up which ends up wasting more time than simply digging into it myself :/

    • @spht9ng
      @spht9ng Месяц назад +1

      @@JJFX-just tell it DO NOT HALLUCINATE . That’s what Apple does on their prompts

    • @JJFX-
      @JJFX- Месяц назад

      @@spht9ng lol "DON'T F'IN LIE TO ME!"

  • @paumb64
    @paumb64 3 месяца назад +20

    11:59 I laughed more than i should have on this part lol. Amazing video

  • @WilburHawthorne
    @WilburHawthorne 29 дней назад +3

    Do not be embarrassed by your mistakes. Nothing can teach us better than our understanding of them. This is one of the best ways of self-education.

  • @IHaveTheCIBCSmart
    @IHaveTheCIBCSmart 2 месяца назад +46

    Bro why do i hear chinese propaganda music in the background

    • @NWIN-zg3hq
      @NWIN-zg3hq 2 месяца назад

      No that's "Without the Capitalist Party there would be no new America".

    • @Jkingwalagamer
      @Jkingwalagamer 2 месяца назад +6

      薳火嚳心中友是

    • @leroyjenkinsreturns
      @leroyjenkinsreturns 2 месяца назад +3

      Don't think about it

    • @FranciTheGamer
      @FranciTheGamer 2 месяца назад

      cause programmers are based

    • @Quardanter
      @Quardanter Месяц назад +1

      Mao zeonlong propoganda

  • @MonroeChapman
    @MonroeChapman 29 дней назад +3

    He who conquers others is strong; He who conquers himself is mighty.

  • @moontoadz
    @moontoadz 3 месяца назад +64

    ANSI you can just say "an-see"

    • @willyzemlya
      @willyzemlya 3 месяца назад +3

      Un-see🙈

    • @BradenBest
      @BradenBest 3 месяца назад

      I've got ANSI in my pantsi

  • @nordern1
    @nordern1 3 месяца назад +3

    Maybe an interesting honorable mention: "fr-016c: fuenf (in your face)" by the demo group Farbrausch. It's a COM file that just produces an endless stream of garbage in the terminal, but because sometimes includes ascii bell symbols, it's technically an application with visuals and audio in 5 bytes.
    (It also crashes the terminal window)

  • @suspense_comix3237
    @suspense_comix3237 3 месяца назад +2

    17:41 This is close to 1.99 Gigabytes for those who don't know.

  • @diegoreckholder945
    @diegoreckholder945 2 месяца назад +5

    it's been about 10 years since I last wrote any code, and about 12 years since I worked with processor instructions. This video made me remember that I loved this before my professors at college made me hate this with my soul 😅

  • @cigmorfil4101
    @cigmorfil4101 3 месяца назад +4

    There used to be a full chess game for the Sinclair ZX81 (Timex 1000) which fitted in the 1k (1024 bytes) of static RAM which came with the system, from which some was used for the screen....

  • @PaulPassarelli
    @PaulPassarelli 3 месяца назад +7

    Back in the days of DOS, we (Crescent Software) sold a library for BASIC (called PDQ) which would allow for the quick compilation & linking of EXEs less then 512 Bytes. Why 'so big' (LOL)? Because that was the size of *ONE* sector on a *FLOPPY DISK*. Anything less was moot.
    It could also create TSR (Terminate & Stay Resident) programs, which were available with a keystroke or interrupt. And we could shove them up into Extended, or of you remember it, "Expanded" memory.
    Since this was in the days prior to math coprocessors, I wrote the 8087 emulator for the product.
    Thanks for the nostalgic trip down memory lane.

    • @lasskinn474
      @lasskinn474 2 месяца назад +2

      did it compile basic into a more native program instead of the more usual of adding the basic intepreter and the bas itself into an exe?
      I remember trying to coax borland c/c++ 3.1 into compiling as small executable as possible (I think I was like 11 back then). i think i got a 'flame' effect down to 8kb or so, which was still huge for what it was(just couple of loops really and calling bios to change the video mode and make the pallette).

    • @PaulPassarelli
      @PaulPassarelli 2 месяца назад +2

      @@lasskinn474 LOL! Yeah, these were genuine EXE files. The BASIC compilers BC 6 & BC 7 Professional were actually pretty good compilers for the time. BASIC code was lexed into 8086, 80286, or 80386 instructions. It even had math coprocessor options. statements like Print, Play, Open, Locate, REDIM, Strings, etc., generated calls into the runtime libraries just like C functions.
      We re-wrote the runtimes from *SCRATCH* in hand tuned assembly language (MASM). Because our libraries were so granular, the linker was able to bring in just the bare bones set of library routines that the programmer actually invoked. Nothing was just along for the ride.
      Since it was a library we were able to add extra functionality, such as the TSR capabilities, interrupt handlers, function pointers, pretty much anything a C coder could do, we put that power in the hands of the BASIC programmer.
      Then came Visual Basic for Windows. But that's a story for another day.

    • @lasskinn474
      @lasskinn474 2 месяца назад +2

      @@PaulPassarelli that's pretty cool, would've been cool to get hold of back in the day.

  • @sundhaug92
    @sundhaug92 3 месяца назад +8

    I mean, you can make a smaller executable for Windows by taking advantage of the NTVDM and making a COM-file

    • @klh.
      @klh. 2 месяца назад

      Yeah, you can get it down to one byte, a single RET instruction.

  • @aarocka11
    @aarocka11 3 месяца назад +4

    Cool. Next time do a boot sector program so that way you don’t need the pesky bloat of an OS to execute.

  • @SojournerDidimus
    @SojournerDidimus 3 месяца назад +3

    I once made an executable a mere 20 bytes in size.
    It ran in DOS, was a .com, not a .exe. It's use was to set text resolution to 120x50 characters (if I remember correctly).

  • @numbr6
    @numbr6 2 месяца назад +3

    Over they years, Windows developers give zero consideration of the size of their programs. I'm glad to see someone demonstrating it is possible to write functionally interesting programs in the

  • @sgtmajorkiwi
    @sgtmajorkiwi 3 месяца назад +4

    watching videos like these gives me such a desire to c r e a t e something in assembly
    but, yknow, then I remember, oh yea, I hate coding in assembly

  • @MsHojat
    @MsHojat 2 месяца назад +2

    I know that 4k is comparatively huge to these tiny minimal-size exes, but I've seen some pretty cool demoscene exes that are only 4kb.

  • @Mr.Pixie.
    @Mr.Pixie. Месяц назад +8

    But can it run Doom?

  • @leviackerman5866
    @leviackerman5866 2 месяца назад +1

    Markus Persson, in a

  • @SSG_Productions
    @SSG_Productions 3 месяца назад +2

    During the Microsoft training video thing the Chinese anthem played in the background

  • @danmakufan
    @danmakufan 2 месяца назад +3

    0:29 is that a CCP song lol

    • @Nonethousand9090
      @Nonethousand9090 2 месяца назад

      Yes. It's called "without the communist party, there will be no new china" or something like that

  • @dark_mode001
    @dark_mode001 3 месяца назад +4

    the thumbnail is steve

    • @imcalledfyre
      @imcalledfyre 2 месяца назад

      How 😂

    • @dark_mode001
      @dark_mode001 2 месяца назад

      @@imcalledfyre it looks like a close up of steve

  • @doslogo
    @doslogo 19 дней назад +2

    My game is 53 KB, runs even before/without Windows directly when the PC turn on power, and funny enough, it has the MZ header! I am quite happy with that 😇

    • @MissNorington
      @MissNorington 19 дней назад +1

      I looked at it, great video, the MZ header is used by the bootsector, very clever!

    • @larkuser
      @larkuser 19 дней назад +2

      thats quite extreme compression you got. blew my mind!

  • @aspectreishauntingeurope
    @aspectreishauntingeurope 3 месяца назад +21

    11:00 none of those characters are a part of ASCII... 😄

    • @timseguine2
      @timseguine2 3 месяца назад +5

      If memory serves, isn't this CP437?

    • @EvelynIsDeprecated
      @EvelynIsDeprecated 3 месяца назад +3

      ​@@timseguine2To my knolwedge with ANSI art, yes

    • @COArSe_D1RTxxx
      @COArSe_D1RTxxx 3 месяца назад

      The "@" sign isn't part of ASCII-7?

    • @goomygaming980
      @goomygaming980 3 месяца назад +3

      @ is ASCII at least

  • @hannanprog
    @hannanprog 2 месяца назад +1

    This video makes you C developer 😂