8 comments

  • ggerules 40 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...
    • 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)

    • WalterGR 56 minutes ago
      97 bytes for Windows at the time this very nice walkthrough was written: http://www.phreedom.org/research/tinype/
    • Bluestein 2 hours ago
      Goodness gracious me.-
  • 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 2 hours ago
        Officially, one should not use KERNEL32.dll for instance but go via crt. In practice, most interfaces are stable.
        • 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.
        • neonz80 2 hours 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.
  • WillAdams 3 hours ago
    For more of the same (though I wish source was available) which actually does something useful, see the various small utilities at

    https://www.grc.com/freepopular.htm

  • eggy 3 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 3 hours ago
      > 100H yeah and basically a memory dump

      ... the days! :)

  • hnea3ekp5i 39 minutes ago
    Appreciate you writing it up
  • drdexebtjl 3 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

    • JoeDaDude 2 hours ago
      What about his contributions to human civilization? ;)

      He got a world record score on the Tempest arcade game [1], then developed an AI which beat his own record[2]. His biggest failure was, that after rebuilding TEMPEST from arcade machine ROMS, he added levels to the game but never made them public [3].

      [1]. https://www.youtube.com/watch?v=EuSMCWu02hA

      [2]. https://www.youtube.com/watch?v=TdbpoDjIvPk

      [3]. https://www.youtube.com/watch?v=BjsVSEbXDOM

    • Keyframe 36 minutes ago
      Dave Cutler was a guest in his garage and it was a great episode. That lands some gravity at least?
    • 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.

    • 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
  • taf2 3 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!