Hello, Assembly! Retrocoding the World's Smallest Windows App in x86 ASM

462,836
0
2021-03-22に共有
Dave builds the World's Smallest Windows application live in x86 assembly using only a text editor and the command line to assemble the program using the Microsoft MASM assembler.

Whether you're a professional programmer or just curious about how assembly language works, what makes it different from machine language, and why it can be faster and smaller than C you won't want to miss it! Take your Windows Programming to the next level. Or the previous level, depending on how you look at it!

Link to Mug:
daves-garage-store.creator-sp...

Link to Code:
pastebin.com/Pmvr4r1S

Thanks in part to a suggestion by 'SonicMouse' that I merge linker sections, the current binary size is 1488 bytes... and yes, it runs exactly the same.

0:00 Start
1:31 Assembly Language vs Machine Language
2:24 Machine Language Monitors
3:22 Hello, Windows!
5:10 Dave's Garage Mug
5:30 Task Manager Enamel Pins
6:04 Editor Sequence Start
10:15 Includes, Libs, Constants, Data
12:00 Main Entry
13:30 ShowWindow
15:11 WinMain
17:10 WindowClass
21:37 WndProc
26:15 Command Line
28:08 Running the App
28:30 Closing Thoughts


Environment: Windows 10 2H02, MacOS 11.2.2
GNU Nano Editor
Microsoft MASM SDK

PS: For anyone keeping score, two things are certain: (a) it can always be smaller, and I'm down to 1488 bytes now, and (b) Steve Gibson has likely forgotten as much about x86 assembly programming as I know :-). Thanks for the recent shoutout on the podcast!

I realize you can make a much smaller app by simply calling MessageBox, but that's why I outlined what I deem to be the "minimum functionality". SonicMouse has come the closest so far at 1776!

コメント (21)
  • @CFSworks
    Fun fact: Roller Coaster Tycoon was written in assembly. There was just a little bit of C code to glue the game into the Win32 API. To date, it's the only assembly program that I know which deliberately contains crashing. :)
  • @KVzism
    Gosh, this channel is a gem
  • "As you know I wrote the Windows task manager." - That quote made me click the Subscribe button, you're one of my personal heros I never knew I had.
  • Been programming for 3 years, it's amazing how Dave shows you what true mastery looks like while remaining incredible humble. Makes you think about what it really means to BE a programmer. You sir are an inspiring.
  • It's only low enough level if you've hand stitched it into rope memory as they did on the apollo flight computer. All these fancy text editors, pah!
  • @lxhon
    When I wrote some assembly code in the early 90s I wouldn't have imagined that one day I'd be seeing someone's screen with 753,488,695,296 bytes of free space next to a 7,292 bytes assembly code. Also: insane assembly coding skills displayed in the 21st century.
  • @TimLesher
    Watching Dave livecode is as relaxing as watching Bob Ross paint. I haven't done Win32 programming in over a decade, but this brought back some great memories.
  • @Upgradeo8
    From buying MS-DOS in a Retail Box, to watching the creation of the World’s Smallest Windows App, what a time to be alive!
  • @pezia
    This makes people appreciate 4k demoscene intros even more.
  • @le9038
    It is actually scary to see this video and think "oh, looks like he is just speeding it up a bit." But then you look at the webcam and realize he is really typing this fast. This man would dominate typeracer
  • @Hossimo
    Love the Steve Gibson call-out.
  • I emailed Dave the other day about the Windows Message Pump, and he replied within 2 hours. This channel is awesome!
  • Even for a modern C++ programmer, this gives a lot of insight to how programming was in the early 90s/late 80s. The commenting work is also very good! Learned some stuff I never knew about Windows.
  • You're a machine Dave. I've coding for 15 years and I can't still code that fast... impressive.
  • @rby_
    I love the soothing piano music in the background
  • I also grew up in the '80s but I was in Louisiana. As you might expect, things were not great for a computer nerd during those days. I had my Commodore 64, banging out BASIC scripts, but I lacked resources or a mentor that could take me to the next level. My guidance counselors, who didn't understand computers, didn't encourage me to go down that path for a career. I literally thought you could be a scientist or work in a store. Retail is what I ended up doing for 10 years, though I was always building my own PCs. I finally broke into the IT support business and never looked back. Still can't code very well though. I wish I had focused on it more when I was young. So if you are a young person, or a parent of one, and your child shows an inclination to learn programming, by all means support them and try to encourage them to learn as much as they can.
  • As a assembly language learner myself, hearing "no include files, no version files, or manifest, or other nonsense" I subscribed the next second.
  • @SkarTisu
    Fascinating content, and Dave’s typing sounds like white noise since it’s so fast. That’s decades of time spent at a keyboard on display. Thanks for creating this!
  • @vince77Z
    I never clicked a video faster in my life