Use the code provided in example to generate MIPS32 assembly for a PIC32MX trainer board. 1. Extend the example to cover all 8 leds. There is a function createVars that currently only initilizes LED1. Bring in other leds as well. Leds1..7 just need that initialization. 2. Add eternal loop that encompasses the user program excluding initializations. There is already an unconditional loop at the end of the program, so you can reuse that example. 3. Port A has been configured as digital, yet the leds are analog devices. Currently writing 1 means that the led is always on at max intensity, 0 means it is off. Pulse-Width Modulation can be used to have intensities between these 2 extremes. The pin controlling a led can be written values 1 and 0 in a loop. Try to set one led to 1 and another led to 1 and then 0 (several times) inside an eternal loop. This is not a convenient approach. Create a way to specify the intensity (for example "0.5 => LED1" or "4/256 => LED1" ). You need to create new flex and bison rules for this statement. Write assembly code to implement a global counter within the eternal loop. Compare the global counter to the supplied values for a specific led and turn it off and on when it is time. Test the PWM statement. 4. Add RGB leds, switches and the ability to read from switches (eg: "SW1 => LED1"). Initialize the switch variables to work as inputs. Change the header file to store whether a variable is input or output. Change the initVars and newVar functions. Create new grammar rule so that switches can be assigned to leds. Write assembly code to read the value of switch from PORTx then AND it with mask. Reading is similar to writing and requires 2 instructions LUI and LW. With AND you can filter for the specific bit. Either write assembly code that implements if-then-else statement to set or clear the led, or shift the value read from switch to a correct position and output it to led. 5. Let switches also control intensity of leds (for example SW1(24/256) => LED1).