Important reminder just in the Preface :-)
Takeaway #1: "C and C++ are different: don’t mix them, and don’t mix them up"
 replies(8): 
Takeaway #1: "C and C++ are different: don’t mix them, and don’t mix them up"
Why is that?
    while(*d++ = *s++)
      ;
     loop:       move.b  (a0)+,d0
                move.b  d0,(a1)+
                bne     loop
     loop:       mov     al,[rsi]
                mov     [rdi],al
                inc     rsi     ; extra instruction!
                inc     rdi     ; extra instruction!
                cmp     al,0
                jne     loop
 I wonder sometimes why we keep insisting on the "OP ARG, ARG" format in general for assembly. Why not something like `MOV X -> Y` that would make it absolutely clear and unambiguous? For that matter, why not `COPY X -> Y`, since that's what it actually does?