Eliot Miranda uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-eem.1496.mcz
==================== Summary ====================
Name: Kernel-eem.1496 Author: eem Time: 9 January 2023, 10:14:53.48949 am UUID: 34ebd1bb-6af6-43f7-b335-abf5dc61d555 Ancestors: Kernel-eem.1495
Fix interpretJump (Decompiler) for SistaV1 short jumps. (how on earth has this gone undetected for 8+ years??)
=============== Diff against Kernel-eem.1495 ===============
Item was changed: ----- Method: InstructionStream>>interpretSistaV1Jump (in category 'decoding - private - sista v1') ----- interpretSistaV1Jump "If the instruction at pc is an unconditional jump, interpret it, advancing the pc, and answering the jump distance. Otherwise answer nil."
" 176-183 10110 iii Jump iii + 1 (i.e., 1 through 8) * 225/16rE1 11100001 sbbbbbbb Extend B (Ext B = Ext B prev * 256 + Ext B) * 237 11101101 iiiiiiii Jump #iiiiiiii (+ Extend B * 256, where bbbbbbbb = sddddddd, e.g. -32768 = i=0, a=0, s=1)" | method byte nextpc extB | method := self method. "consume and compute any extension first." extB := 0. nextpc := pc. "must not advance pc unless this is a jump." [byte := self method at: nextpc. nextpc := nextpc + 1. byte = 16rE1] whileTrue: [| extByte | extByte := self method at: nextpc. nextpc := nextpc + 1. extB := (extB = 0 and: [extByte > 127]) ifTrue: [extByte - 256] ifFalse: [(extB bitShift: 8) + extByte]]. (byte between: 176 and: 183) ifTrue: [pc := nextpc. + ^byte - 175]. - ^byte - 191]. byte = 237 ifTrue: [byte := method at: nextpc. pc := nextpc + 1. ^(extB bitShift: 8) + byte]. ^nil!
packages@lists.squeakfoundation.org