Try this -- 'scuse the formatting, but there's no good way to format it. It produces the same results on 32-bit and 64-bit Perls for one randomly generated set of input data:
for( my $h = 16; $h < 80; $h++ ) { $i[$h] = a2( ( ( ( ( ( $i[$h - 3] ^ $i[$h - 8] ) & 0xffffffff ) ^ $i[$h - 14] ) & 0xffffffff ) ^ $i[$h - 16] ) & 0xffffffff , 1 ); } print "@i"; sub a2 { my ($b, $a) = @_; my $c = $b >> 32 - $a; my $e = (1 << 32 - $a) - 1; my $d = $b & $e; return tos($d << $a | $c); } sub tos { my ($num) = @_; $num = $num - 4294967296 if $num > 4294967295; $num = $num + 4294967296 if $num < -2147483648; if ($num >= 0) { $num = $num - 2 ** 32 if ($num >> 31); } return $num; }
In reply to Re^3: emulate 32-bit on perl 64
by BrowserUk
in thread emulate 32-bit on perl 64
by loofort
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |