3 ms·
97% of AI enthusiasts will be astonished by complete garbage, and just blindly copy-paste it into forums, assuming that others will share their astonishment (an
by rep_lodsb 10mo ago
97% of AI enthusiasts will be astonished by complete garbage, and just blindly copy-paste it into forums, assuming that others will share their astonishment (and somehow consider them intelligent / interesting for it, despite expending almost zero effort themselves?).
Let's take a look at just the first few instructions here:
ASCII HEX ASM
j% 6A 25 PUSH 25h ; 80186+ only, won't work on Atari Portfolio!
1! 31 21 XOR [BX+DI],SP ; complete nonsense
P 50 PUSH AX ; AX sort-of-undefined at this point, depends on DOS version and command line arguments
Z 5A POP DX ; copy AX into DX
Y 59 POP CX ; CX = 25h?
fX 66 58 POP EAX ; 80386+ only! also nothing on stack anymore!
0f1 30 66 31 XOR [BP+31h],AH ; complete nonsense
...
This looks like randomly jumbled together from fragments of ASCII-only machine code intended for much newer x86 processors -- just look at how often `f` appears in those strings, which is the operand-size prefix, and meaningless on 16-bit chips. The memory addressing might make more sense in 32-bit mode too, where a different encoding is used (modr/m and SIB byte).
And this is how LLMs work. They can associate the tokens for e.g. `PZ` with the instructions `PUSH AX / POP DX`, and a certain kind of program in which those would be likely to appear, drawn somewhere from their massive training set.
Humans can easily learn to recognize these 'words' of ASCII text in machine code too, just by spending time looking at it. Another good one is the pair of `<ar` and `<zw` (usually next to each other, with an unprintable character between), present in most upcase()-like code from that era. So if you had asked Grok to accept both upper and lower case of hex input, I would bet that it would have inserted those sequences somewhere too.
But what LLMs CAN NOT do is plan ahead on how to use these program fragments to accomplish a specific task, or keep simple constraints in mind like "this must run on the 80C88 processor in the Atari Portfolio". They even have trouble with keeping track of registers, stack, or which mode the CPU is in.
(yes, late, but I can't let this stand here uncommented. https://xkcd.com/386 https://xkcd.com/386 )
- timonoko 10mo agoI did notice that the second example contained both upper and lower case characters, when logical choice reading lower nibbles would have been chr(0x40)..chr(0x4F). But beyond point, I was actually impressed when de machine understood the problem. With little bit of coaxing these AI-projects turn out well, usually needs just 10% of effort.
- rep_lodsb 10mo agoYou're absolutely correct, excellent observations! Now that I have your unquestioning attention to whatever bullshit I write: THE. CODE. DOESN'T. WORK. Not on the Atari Portfolio, nor anywhere else. It shows no 'understanding' of even the bare minimum required for this. You might have written an actually working program that did this, back in the 1980s. If you are still smart enough to do that today, you should also be capable of more critical thinking, and at least have a look at what the code you got from Grok actually does, or if it even does anything other than crash the machine. The upper/lower case thing was an example, not something from your code.
- timonoko 10mo agoWell if you ask Grok to make a simple program in assembler it does it errorlessly. I tried Recursive Fibonacci once. If we really want to make a program that uses only bytes in range 0x20..0x7E we need an environment, where Grok can verify the code. Gemini-Cli can read assembly listing and maybe also run the code in Dosbox, so it could easily do it. Gemini just made me Linux GCODE displayer just by repeatedly viewing the picture and modifying the code, all by itself.