anchor.diff:    ;; Sign extend the right argument (previous value in RDI).
     (sys.lap-x86:sar64 :rdi 63)
     (sys.lap-x86:jmp sx-right-resume)
  +  sign-changed
  +  (sys.lap-x86:cmc)
  +  (sys.lap-x86:rcr64 :rsi 1)
  +  (sys.lap-x86:sar64 :rsi 63)
  +  (sys.lap-x86:jmp sign-fixed)
     bignum-overflow
     (sys.lap-x86:push 0) ; align
     (sys.lap-x86:mov64 :r8 (:constant "Aiee! Bignum overflow."))
  
positive.code:   (sys.lap-x86:mov64 (:r10 #.(- +tag-array-like+) :rbx) :rsi)
    ;; Crunch the bignum down to the correct size.
    ;; TODO: Not really correct...
    keep-crunching
    (sys.lap-x86:cmp64 (:r10 #.(- +tag-array-like+) :rbx) 0)
    (sys.lap-x86:je crunch)
  
negative.code:   (sys.lap-x86:mov64 (:r10 #.(- +tag-array-like+) :rbx) :rsi)
    ;; Crunch the bignum down to the correct size.
    ;; TODO: Not really correct...
    (sys.lap-x86:cmp64 :rbx 8)
    (sys.lap-x86:je stop-crunching)
    keep-crunching
    (sys.lap-x86:cmp64 (:r10 #.(- +tag-array-like+) :rbx) 0)
    (sys.lap-x86:je crunch)
  