- cross-posted to:
- programmerhumor@lemmy.ml
- cross-posted to:
- programmerhumor@lemmy.ml
I have. Mostly on embedded devices that have no OS and you need something very specific.
… Or that one time i was reverse engineering a console kernel. I wrote arm asm then. Was actually fun to do tbh
I was taught assembler in my second year at school
It’s kind of like construction work
With a toothpick, for a tool
~ The Eternal Flame, by Bob Kanefsky
I bought a PC kit and it said “some assembly required” so I always try to link at least one asm file in my projects.
Generally speaking the OS is your universe and you interact via syscalls. Linking libc is also an option.
In some instances you may need to roll your own, but it’s likely to be small and specialized.
:stares in genX:
That’s not assembly, that’s ikea.
Back in my day…
Remember before .dlls were a thing and you had to write your own config files for every game that you installed on DOS?
My old job had a lot of embedded programming - hard real-time Z80 programming, for processors like Z800s and eZ80s to control industrial devices. Actually quite pleasant languages to do bit-twiddling in, and it’s great to be able to step through the debugger and see that what the CPU is running is literally your source code, opcode by opcode.
Back when a computers were very simple things - I’m thinking a ZX Spectrum, where you can read directly from the input ports and write directly into the framebuffer, no OS in your way just code, then assembly made a lot of sense, was even fun. On modem computers, it is not so fun:
-
x64 is just a fucking mess
-
you cannot just read and write what you want, the kernel won’t let you. So you’re going to be spending a lot of your time calling system routines.
-
99% of your code will just be arranging data to suit the calling convention of your OS, and doing pointless busywork like stack pointer alignment. Writing some macros to do it for you makes your code look like C. Might as well just use C, in that case.
Writing assembly makes some sense sometimes - required for embedded, you might be writing something very security conscious where timing is essential, or you might be lining up some data for vectorisation where higher-level languages don’t have the constructs to get it right - but these are very small bits of code. You would be mad to consider “making the whole apple pie” in assembly.
-