Anyone here ever used assembly?

Anyone here ever used assembly?

Attached: assembly.png (1013x1613, 141K)

Yes

What was your experience with it like?

Not him, but its a lot harder than programming in higher level languages. It requires a high level of familiarity with the device you're programming and an extremely clear definition for what you want that device to do.
It's also extremely powerful and lets you write very lean, efficient programs.

In my experience, programming in assembly is largely unnecessary in most situations due to modern devices having a lot of excess memory and processing power. But if you have lightweight hardware like a microcontroller and you need it to quickly and reliably do something specific with limited overhead, assembly is your huckleberry.

Learning the language will make you a better programmer, but you'll probably go your entire career without needing to actually write something in assembly. Unless you go into one of a handful of niche careers, in which case- if you're good at it- you'll make a shitload of money and be practically irreplaceable.

LOL whats that xDD

Attached: 1534560246080.gif (358x262, 224K)

I've played Shenzen I/O a few times does that count?

Yes. It was fun but not very practical. Should be the first thing thought to CS students.

For embedded software its actually very relavent.

I did IBM mainframe assembly if that counts.

Ya i did assembly last semester. It was based in mips though

>It's also extremely powerful and lets you write very lean, efficient programs.
No because assembly code generated by a compiler is often better than hand-crafted assembly code since it will include nontrivial optimizations.

>But if you have lightweight hardware like a microcontroller and you need it to quickly and reliably do something specific with limited overhead, assembly is your huckleberry.
C is often more than enough for that.

No because Shenzhen is as code to assembly as Basic is.

I did courses with a Microchip Tech PIC8 microcontroller and an emulated Intel 8086.
It's fun and you learn tiny performance tricks that aren't all that useful in the grand scheme of things.

The knowledge is somewhat applicable to intermediate languages.

(Me)
btw, the Intel 8086 uses a 16 bit arch. x86 is the arch family based on the Intel 8086 instruction set.

Honestly that's good enough. x86 assembly is very difficult and much worse when you include the x64 extensions.

FASM, TIS-100 and also directly setting RAM values in an 8086 emulator. FASM with macros is basically C.

I've done some 6502 and Z80 assembly programming when I was fucking around with NES and Gameboy dev. I learned a lot and found it to be fun, albeit tedious.

6502, ARMv4T, DCPU-16 are those I've written my own apps in it. I've only used x86 asm to patch out nag screens/license checks from Windows apps with Olly for personal use. And finding out from x86 objdump logs why the hell my *nix game ports were crashing (the *nix I targeted didn't have a usable debugger)

It's like people avoid x86 assembly. Why? It seems like the most useful one it given that's what relevant CPUs are.

x86 assembly is not simple enough to be written by hand for nontrivial things. Imo RISC machines e.g. mips have easier to write assembly languages

I try not to usually, but yes

i learned mips assembler in college
it was more difficult but i enjoyed the challenge
to think that gamedevs used to use x86 asm blows my mind. implementing recursion took a long time to do properly, i cant imagine building a game engine

X86 assembly with segmented memory gave people PTSD. X86-64 is alright, it simply has too many instructions.

Why would you not just jump to your same function address with a pointer to some address where you were keeping track of depth? That'd be a simple function call. What did you do to implement recursion?

moving contents of registers into memory when recursing and restoring those registers when returning, it's more tedious than anything
also you have to be careful that you dont store items in memory locations that might be overwritten by your recursive calls, either by storing register contents after all the locations you intend to store values in memory, or by limiting the recursion depth (which is what i had to do)

You're right I was thinking passing by value not reference. I.e. computing factorials, arithmetic sums. Trivial shit

yes. good thing nobody has to do this anymore

All the time and it is autistic af.

i wrote an x86 hypervisor, among other things
my advice is:
never use more than absolutely necessary
clang and gcc provides inline assembly tools for all the special instructions you need, and in everything else the compiler writes way better code than you ever will. learn all the tricks of gcc style inline assembly amd you're set forever

You get autistic screechings from seniors about muh portability if you ever work in embedded.

x86 is not hard at all
Especially with the nasm assembler

We learned 8051 microcontroller asm in university, dayum shame I forgot most of it.

Trying to learn x86 right now with a few books
So far it's interesting but a little tedious

Yes, developing an MSX game with it at the moment, but Z80 is not as bad as the x86.

Attached: lifebar.webm (320x240, 2.47M)

enlighten my child and embrace the intel sdm, the only true god