I was now able to verify that all of my x86-instructions work. Thank you all for your help.
But with x64, I found a related issue (I think):
The code 0x4D895C00 should be disassembled to "mov %r11,(%r12)" (move 8 bytes from %r11 to the memory address in %r12). I have verified that multiple times (maybe I've overlooked something).
When I use the GNU assembler for this instruction, I get 0x4d891c24, which is also valid (it uses a SIB-encoding, while I'm using a displacement). Disassembling works in that case.
When I feed my code into objdump, I get however:
0000000000000000 <.data>:
0: 4d rex.WRB
1: 89 .byte 0x89
2: 5c pop %rsp
...
So objdump doesn't even recognize 0x89 as a mov-opcode. Why?