ggerules 16 minutes ago

Windows and assembly is a fun topic!

Putting the search terms "Windows" and "assembly language" turns up all sort of books. The one that got me to initially explore the topic (from 1993).... [0]

For a more up to date treatment of assembly and windows.... comes with source code for the IDE also. Ray Seyfarth's book [1].

[0] Windows Assembly Language & Systems Programming: Object Oriented & Low-Level Systems Programming in Assembly Language for Windows 3.X

[1] Introduction to 64 Bit Windows Assembly Language Programming: Fourth Edition ISBN-13: 978-1543138849, ISBN-10: 1543138845

haunter 2 hours ago

Meanwhile in the Unix world you can go as low as 45 bytes https://www.muppetlabs.com/~breadbox/software/tiny/teensy.ht...

  • Bluestein 1 hour ago

    Goodness gracious me.-

    • p00dles 1 hour ago

      I hope that expression makes a comeback.

      • Bluestein 1 hour ago

        You know? FOR ONE expression our current neuralese-spewing friends could standarize on - I'd not mind this one (and the ilk) becoming "load-bearing", again.-

        PS. Honest take :)

  • Someone 1 hour ago

    Unfair comparison. The Windows tool (FTA):

    “Runs a Windows message loop Has a title bar, minimize, maximize, and close buttons, which all work as expected Has a system menu with the same Paints the background and some text centered in the middle, equal to or larger than "Dave's Tiny App"”

    That Linux program:

    “Let’s take an incredibly simple program, one that does nothing but return a number back to the operating system”

    See https://archive.is/w01DO#selection-265.0-265.44 for a fairer comparison (97/133 bytes)

delta_p_delta_x 2 hours ago

Interesting to bypass CRT and work directly against the Windows API. That said, these rely on USER.32.DLL and KERNEL32.DLL to do the majority of the heavy lifting.

It's a bit like 'smallest hello world in assembly' but the code is just setting up the calling convention and then passing the zero-terminated character string into `write`. Cool, but that could be done a bit more straightforwardly in C, too. A lot of assembly (including in the linked repository) is book-keeping for the platform's calling convention.

  • skrellm 2 hours ago

    > That said, these rely on USER.32.DLL and KERNEL32.DLL to do the majority of the heavy lifting.

    Since the low-level Windows kernel API is undocumented and non-public, using these system DLLs is your only option on Windows.

    It's just like linking against libc.so on any POSIX systems.

  • munchler 2 hours ago

    It’s a minimal Windows app, so the whole idea is to rely on Windows DLLs as much as possible.

    • actionfromafar 1 hour ago

      Officially, one should not use KERNEL32.dll for instance but go via crt. In practice, most interfaces are stable.

      • neonz80 1 hour ago

        kernel32 is an official API, you're probably thinking of ntdll. CRT is the C-runtime. Not everything is written in C.

        • actionfromafar 1 hour ago

          Yes, you are right, must have been thinking of ntdll.

      • delta_p_delta_x 1 hour ago

        KERNEL32.DLL (in spite of the name) provides user-mode system services for the Windows API. The CRT provides the C99 API. There are many entry points to the same thing on Windows; you can do any of `malloc`/`HeapAlloc`/`new`/`VirtualAlloc` to get a void* memory buffer. `malloc` is from the CRT; `HeapAlloc` is from KERNEL32.DLL, and `new` is from the C++ runtime.

hnea3ekp5i 15 minutes ago

Appreciate you writing it up

eggy 2 hours ago

I should try FASM to see if it produces a smaller size exe. COM files are small, but 16-bit DOS was the thing back in the day - 100H yeah and basically a memory dump.

  • Bluestein 2 hours ago

    > 100H yeah and basically a memory dump

    ... the days! :)

drdexebtjl 2 hours ago

The developer, Dave Plummer, left Microsoft to develop and distribute malware and scams in the 90s. See previous thread at [1].

Nowadays he spreads misinformation disguised as war stories from his time at Microsoft.

[1]: https://news.ycombinator.com/item?id=39813625

  • rvz 2 hours ago

    Do you have any evidence of these (unsubstantiated) claims against him?

    • drdexebtjl 2 hours ago

      Edited with previous threads linking court documents.

  • TiredOfLife 2 hours ago

    He also lied about his contributions to Start menu

  • skinfaxi 1 hour ago

    My how the overton window has moved. Some of violative conduct is standard practice now.

    > When consumers prepared to purchase a product, additional services and products including a $9.95 back-up disc and $4.95 ‘optional extended service’ plan appeared on the check-out form. The form also listed “one free year of updates” – selected by default – but the company was then authorized to automatically charge a consumer’s credit card at the end of the year unless the buyer cancels the update plan.

  • Keyframe 13 minutes ago

    Dave Cutler was a guest in his garage and it was a great episode. That lands some gravity at least?

taf2 2 hours ago

love this and it's timely as I think with AI more of my code will just be native assembly for example: https://github.com/taf2/tic-tac-toe my m series native assembly based tic tac toe windowed game... very portable too you just simply execute codex --yolo port my app to x y z host...

  • eggy 2 hours ago

    I haven't played with yolo yet. I'll have to use my airgapped, old Lenovo ThinkPad for this! Whenever I see yolo, I can't stop thinking of Joseph Redmon's YOLO and his astounding resume format!