From: Brian D. <bdo...@la...> - 2003-10-29 03:09:26
Attachments:
lra-patch.diff
|
On the PowerPC the rather common instruction "mtlr r31" has the same low byte as the LRA widetag. This makes disassembly interesting: * (disassemble 'add-smallnums) ; 48AF2BE8: ADD $A0,$A0,$A1 ; no-arg-parsing entry point ; BEC: MR $CSP,$CFP ; BF0: MR $CFP,$OCFP ; BF4: ADDI $LIP,$LRA,5 ; BF8: .LRA ; BFC: MR $CODE,$LRA ; C00: BLR ; C04: WORD #X00000000 ; The .LRA at BF8 is actually an instruction "MTLR $LIP" to load the $LIP register into the link register to be branched to with "BLR". The patch makes this appear instead as this: * (disassemble 'add-smallnums) ; 400A27D0: ADD $A0,$A0,$A1 ; no-arg-parsing entry point ; D4: MR $CSP,$CFP ; D8: MR $CFP,$OCFP ; DC: ADDI $LIP,$LRA,5 ; E0: MTLR $LIP ; possible LRA ; E4: MR $CODE,$LRA ; E8: BLR ; EC: WORD #X00000000 ; -bcd -- *** Brian Downing <bdowning at lavos dot net> |
From: Christophe R. <cs...@ca...> - 2003-10-29 12:56:50
|
Brian Downing <bdo...@la...> writes: > On the PowerPC the rather common instruction "mtlr r31" has the same > low byte as the LRA widetag. This makes disassembly interesting: Thank you. I've merged this (with a slight textual amendment) into sbcl-0.8.5.14. Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |