Create ncopy.ys

For CSAPP Lab 7 Pipeline Optimization

Part C

Techniques Used:
# -Jumptable
# --Creating 30 independent loops to take the place of 1 instruction: jg Loop,
# --thus saving 1-3 CPE for each instruction, and decreasing about 1 CPE in ./benchmark.pl
# 
# -Jump logic optimizing
# --Branch prediction's not so effective in this prog, especially when you've looked through
# --the benchmark results. Thus ensuring copies lower than 30 having the least cycles is of
# --great importance. Make sure that the branch selections are always correct for them.
# --In this prog, jle Loopcount | jle Exit are examples of them. Switching them with instructions 
# --nearby, and the CPE will increase.
#
# -Neglecting given "Done"
# --Since we've finished adding ILEAVE and IADDL to Pipe-full.hcl,
# --it's natural and necessary to use them in this prog.
# --RRMOVL %ebp, %esp | LEAVE are taken by ILEAVE.
#
# -Implementing ILEAVE and IADDL
# 
# -Removing 3 POPL operations
# --Just for decreasing CPE, not suggested.
# 
# -Loop Unrolling
# --Not implemented, since Pipe-full.hcl has been modified to optimize MRMOVL -> RMMOVL instruction set.
# --(Illustrations are introduced in CSAPP Homework 4.57)