diff --git a/src/main.rs b/src/main.rs index b6357544cd00243f9a2bf6f3df625bf3ea1e0e80..2846a2db582db30d48d9bef86f23db2e12996922 100644 --- a/src/main.rs +++ b/src/main.rs @@ -140,14 +140,70 @@ static CODED: [u32; 132] = 0]; + fn codgen() { } +fn decode(coded: &[u32], plain: &mut[u8], seed: &mut u32) -> u32 { + + let x = 3; + x +} + +fn main() { + println!("Time to decode!"); + let mut seed = 0x0e0657c1; + decode(&CODED, &mut PLAIN, &mut seed); -fn main() { - println!("Hello, world!"); } +/* +# Group 1's Codeword Generator Subroutine (pseudocode) +# (remember: "seed" is a global variable, UNSIGNED INTEGER; +# you may implement local variables in registers or on the stack; +# result returned in v0; preserve all except t regs) +# +# FUNCTION codgen(): UNSIGNED INTEGER; +# LOCAL SIGNED INTEGER n; +# LOCAL UNSIGNED INTEGER x, y; +# BEGIN +# n := [count the number of 0's in word "seed"]; +# x := [rotate "seed" left by 30 bits]; +# y := [shift "seed" right-ARITHMETIC by 6 bits]; +# seed := x XOR y XOR n; +# RETURN( seed XOR 0x464b713e ); +# END; +# +# hint: if "seed" is initialized to 0x3e944b9f, +# the first five calls will generate these values: +# 0x891432f9, 0x4aa1dccc, 0xc54270fa, 0x9885155f, 0xce83d1b8, ... +# your code is to be written farther down (see comment below). + + +# Group 1's Recursive Decoding Subroutine (pseudocode) +# (for "decode", all four local variables must be implemented ON THE +# STACK, and NOT in registers; implement the code literally,. +# no optimizations. We're trying to teach you something. +# remember: result returned in v0; preserve all except t regs) +# +# FUNCTION decode( wordarr, bytearr ): UNSIGNED INTEGER; +# (wordarr, bytearr passed by reference) +# LOCAL UNSIGNED INTEGER m, r, x, y; +# BEGIN +# x := ONE'S-COMPLEMENT of codgen(); +# IF ([contents of word at "wordarr"] = 0) THEN +# [byte pointed to by "bytearr"] := 0; +# r := x; +# ELSE +# y := decode( wordarr+, bytearr+ ); # "k+" means "successor in k" +# m := ( x - y ) - [contents of word at "wordarr"]; +# [byte pointed to by "bytearr"] := [the eight bits at "m"<20:13>]; +# r := TWO'S-COMPLEMENT OF codgen(); +# r := x + y + m + r + 5; +# ENDIF; +# RETURN( r ); +# END; +*/