Hello from a libc-free world
Why do we use xorl to store 0, but mov for 1?  mov $1, %eax
  xorl %ebx, %ebx # Why not mov for this one?
  mov $0, %ebx    # Wouldn't this work as well?

I'm guessing mov would work in either case, but there's some reason people always do the xorl instead?