A few things first:
--- Quote Start ---
use ieee.numeric_std.all;
use ieee.std_logic_signed.all;
--- Quote End ---
You shouldn't use those two libraries in the same code, it can lead to strange problems. Besides I guess that you'll do an ALU one day so you'll need both signed and unsigned operations, so I recommend to drop the non standard std_logic_signed library and use std_logic_signed with the signed and unsigned types.
--- Quote Start ---
shared variable pc :std_logic_vector(4 downto 0);
--- Quote End ---
Shared variables usually can't be synthesized and should only be used for debugging or test benches. You should rather use a signal, or a variable inside your second process. Besides I'm not sure the Quartus simulator supports shared variables.