• addie@feddit.uk
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    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.

  • TunaCowboy@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    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.

  • zitrone 🍋@lemmings.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    If everything above ASM is the Universe, what is below? What is the ALU, CU and everything else that goes into Processor design? What comes before the Universe?

  • DacoTaco@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    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

  • HonorableScythe@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    3 months ago

    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

  • bandwidthcrisis@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    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.

  • Alex@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    I write assembly for test cases and early setup code. I read far more assembly than I write.