Erick, you are modifying the "mov" instruction to allow moving the address of a label to a register. For the x86-32 the linker has to be involved because there is no "pc-relative" addressing (except for jumps). On the x86-64, pc-relative addressing is one of the addressing modes. So loading the address of label XXX in %rdi could be done with a "load effective address" instruction like this:
leaq XXX(%rip), %rdi
The advantage is that the linker is not involved (less work to do when loading the program). The instruction encoding may be a little shorter too, and maybe faster.
So try to use this instruction when generating code for the x86-64.
Marc