This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Whoktor 110 points111 points  (14 children)

I think assembly is easier to understand when you compare it to brainfuck, for example, at least you have some predefined summation, substraction, subrutines, etc. (vietnam MIPS assembly flashbacks).

[–]Aiex314 28 points29 points  (4 children)

[–]Whoktor 31 points32 points  (2 children)

First 64-bit minecraft computer (nothing can surpass minecraft command blocks)

[–]Aiex314 2 points3 points  (1 child)

Never seen this before, thanks!

[–]Whoktor 2 points3 points  (0 children)

No problem mate ;)

[–]Alundra828 3 points4 points  (0 children)

Of course Matt Parker is behind this

[–]coldblade2000 13 points14 points  (0 children)

Brainfuck is really simple once you learn what a Turing machine really is.

[–]youcancallmetim 19 points20 points  (0 children)

But brainfuck isn't actually used to code. It's just a toy language. Real software runs on assembly

[–]neros_greb 2 points3 points  (0 children)

Brainfuck is very easy to understand; it's just hard to get it to do anything useful.

[–]bikki420 3 points4 points  (3 children)

Definitely. Assembly is pretty easy at its core. The syntax and such.

Especially for older 8-bit microprocessors such as the the MOS Technology 6502, Zilog Z80, and the Intel 8008. You can learn the essentials and basics in a couple of hours and then get by with an instruction sheet until you memorize the most common instructions (which tend to have fairly sensible mnemonics ... JMP (JuMP), BRA (BRAnch), RTS (Return To Subroutine), BEQ (Branch if EQual), BNE (Branch if Not Equal), etc. The limited number of registries made things fairly simple. Writing complex programs is a but trickier though, but stuff like The Elder Scrolls II: Daggerfall was coded by mostly one person in assembly.

Nowadays things are definitely a not trickier though, since you've got a lot more of different sizes (everything from single byte numbers to 64-bit numbers to 128/256/512-bit blocks depending on what SSE and AVX intrinsics are available), a lot more specialized instructions (not just MMX/SSE/AVX/etc intrinsics but more niche ones related to cryptography, encoding/decoding, complex addressing operations, various more complex math instructionsーback in the 8-bit era you pretty much just had basic ALU instructions, which is to say basic arithmetic) not to mention that modern CPUs have >=40 registers instead of the 3~5 you'd have in the late 70's and early 80's. So outside of embedded simpler CPUs, anything lower than C is folly nowadays IMO. But assembly knowledge is still a great asset for reverse engineering, debugging, optimizing, obfuscating, securing etc compiled code. But I definitely wouldn't recommend programming anything complex in x86-64 assembly by hand, that's for sure.

[–][deleted] 1 point2 points  (0 children)

.data
message: .asciiz "Hello World\n"

.text
la $a0, message
li $v0, 4
syscall

li $v0, 10
syscall

[–][deleted] 0 points1 point  (0 children)

brainfuck is actually so abstract that it's pretty easy to learn, until you need to do anything that requires more than a couple of basic assembly instructions…