Definitely agree with JWoordrell. C is actually a really small and concise language as far as built in features go. Most of the "porting" will be in setting up the particular MCU's peripherals (clocks, ADCs,etc). Each architecture has very detailed data sheets on setting up the different peripherals.
So if you wanted to port code from an AVR Atmega328p to to MSP430 you would have to understand the periphials of each. In the AVR's case we would want to find the data sheet for this device or device family. A quick google search for "Atmega328p Datasheet"
yields exactly what we want. Here