at start.c the boot parameters are copied to the kernel space with
phys_copy(). This routine first aligns the source. I have some questions
about that:

1. the alignment's purpose is to use movsb for bytes and movs for
word-pairs? Under which situation could be left any single bytes?

2. How is possible to copy data from the 16-bit monitor to the 32-bit kernel
space? What about the upper words of the monitor's data?

3. Do we need the last
and eax, 3
before label 'pc_small'? eax value should be zero by then

thank you