• 0 Posts
  • 31 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle


  • Babylon 5 is a weird show for me. When it was first running, I religiously watched it. If I couldn’t watch it live, I got upset and went around my circle of friends to see who’d recorded it so I could watch it as quickly as possible. Up to Season 4 I was gripped. (Season 5 was “meh” because of production shenanigans.)

    Years later I watched them on DVD and … the magic was gone. Watching one episode after another, without separating them by a week, just took the shine off of it. I didn’t even finish watching the episodes on DVD; I think I made it to mid season 3 (and the amount I watched slid down and down up to that) before not bothering to continue. I eventually gave them all to a friend of mine and never watched the show again.

    I can’t think of a single show I’ve ever watched that had that weird impact on me: first loved, second bored. Usually shows I loved I keep loving, shows I was bored by remained boring, and very occasionally a show I thought was boring the first time got more interesting on second viewing. But B5? It’s the only one that goes this way.






  • No. This is like asking if a 6502 microprocessor can run a 6809’s code because they’re both 8-bit micros.

    The family of instruction sets under the RISC-V banner is completely different from the family of instruction sets under the ARM banner. I’ll compile this program for RISC-V and ARM and show you the compiler outputs for an example:

    #include 
    int main(int argc, char** argv)
    {
        printf("Hello, world!");
    }
    

    First ARM (a fairly generic ARM32 processor core’s output):

    .LC0:
            .ascii  "Hello, world!\000"
    main:
            push    {r7, lr}
            sub     sp, sp, #8
            add     r7, sp, #0
            str     r0, [r7, #4]
            str     r1, [r7]
            movw    r0, #:lower16:.LC0
            movt    r0, #:upper16:.LC0
            bl      printf
            movs    r3, #0
            mov     r0, r3
            adds    r7, r7, #8
            mov     sp, r7
            pop     {r7, pc}
    

    Now RISC-V (again a fairly convention 32-bit RISC-V core):

    .LC0:
            .string "Hello, world!"
    main:
            addi    sp,sp,-32
            sw      ra,28(sp)
            sw      s0,24(sp)
            addi    s0,sp,32
            sw      a0,-20(s0)
            sw      a1,-24(s0)
            lui     a5,%hi(.LC0)
            addi    a0,a5,%lo(.LC0)
            call    printf
            li      a5,0
            mv      a0,a5
            lw      ra,28(sp)
            lw      s0,24(sp)
            addi    sp,sp,32
            jr      ra
    

    Comparing the two you’re going to note several very major differences. One of the biggest and easiest to spot, however, is how ARM pushes r7 and lr onto the stack at the beginning, but pops r7 and pc at the end. This is because lr contains the “return address” (it’s a bit more complicated than that, but close enough for jazz) on entry and pc is the “program counter” which is where the processor will get its next instruction from. By popping what was the lr value into pc you’ve effectively done a transfer of control to the return address without an explicit branch.

    RISC-V, conversely, uses ra (their equivalent of lr) pushed onto the stack (note how each value is pushed manually, not part of a combined instruction), then popped back from the stack and an explicit jr branch instruction is used to set the next instruction to be executed. So even ignoring the different names of instructions (which could just be different naming conventions for the same thing), the very way the two systems operate is very different.

    So while ARM and RISC-V are both RISC processors, they are not even similar to each other in operations beyond both following the RISC philosophy of instruction set design.


  • I have always understood that C generally compiles almost directly to assembly with little to no abstraction overhead, and it would not require platform-specific ASM code.

    You have always understood incorrectly then. I’d recommend a trip over to Godbolt and take a look at the assembler output from C code. Play around with compiler options and see the (often MASSIVE!) changes. That alone should tell you that it doesn’t compile “almost directly to assembly”.

    But then note something different. Count the different instructions used by the C compiler. Then look at the number of instructions available in an average CISC processor. Huge swaths of the instruction set, especially the more esoteric, but performance-oriented instructions for very specific use cases, are typically not touched by the compiler.

    In the very, very, very ancient days of C the C compiler compiled almost directly to assembly. Specifically PDP-11 assembly. And any processor that was similar to the PDP-11 had similar mappings available. This hasn’t been the case, however, likely longer than you’ve been alive.







  • I think you’re missing a few key points:

    1. It’s a COMEDIC series, not a serious drama. It’s Adams taking potshots at things that struck him as funny or upset him. Like the whole “shoe event horizon” thing was an eloquent rant about how he couldn’t find shoes that fit one day. (No, really!) The fact that it blew up into this massive thing was an accident, not a design, and he didn’t set out to write a Serious SF Series™.

    2. The “Britishness” of the relationships is part of that comedy. He’s making fun of Brits’ “reserve”.

    3. The Fenchurch thing never really fit into the vibe, and given the series’ entire schtick of random things occurring out of nowhere and then vanishing into nowhere (like the guy whose every incarnation was killed by Arthur Dent), it’s on-point for her to just vanish into nothingness. (And as for his reaction, consult point 2.)

    TL;DR Summary

    This is a comedic series best viewed as a collection of incoherent, inconsistent vignettes with an underlying theme (kind of like the more serious The Martian Chronicles of Ray Bradbury), not as a serious space drama spread out over books.




  • And we all know the first thing writers are taught is “bore the audience to death in the beginning of your story because they’ll stick around for the possibility of things finally picking up”.

    No, wait.

    They’re taught the exact opposite. They’re taught to hook the audience early to induce the interest that keeps people going over the slow parts because they’re already invested.

    A TV show has 3, sometimes 4, episodes to hook me. If I’m not hooked, I’m out. A book has 50 pages to hook me. If I’m not hooked, I’m out. Life’s too short to slog through boring crap on the off chance it gets better. Because it rarely does.


  • I don’t mind people going on and on and on. (I mean I loved Mervyn Peake!) What I hate about Stephenson is how he:

    1. Can’t write people. At all. His “characters” are “concepts with a name attached”. Ugh.
    2. He often goes on and on and on about stuff he’s absolutely wrong about at a fundamental level. (Like his bizarre take on Chinese culture in that one with the nanotech; I’ve forgotten the title. The Diamond Age?)

    One or the other above I can cope with. Both together made me cringe every time I set eye on a page.