Hello all, I'm trying to expand X86 ISA. So I have added some hardware to X86 (in Gem5 Simulator) and I have updated X86 decoder to support those instructions. In order to call those instructions I use GCC inline assembly ".byte" directive. something like this : ".byte 0xF0, 0x0F, 0x23;" The problem is when I compile my code using GCC, it changes the instructions that i have created. For instance: I intend to have something generated like this: 403ce3: 48 89 eb mov %rbp,%rbx 403ce6: 48 83 e3 fe and $0xfffffffffffffffe,%rbx 403cea: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 403cef: f0 0f 23 lock (bad) 403cf2: 48 89 04 24 mov %rax,(%rsp) 403cf6: 4c 8b 34 24 mov (%rsp),%r14 but GCC generates something like this: 403ce3: 48 89 eb mov %rbp,%rbx 403ce6: 48 83 e3 fe and $0xfffffffffffffffe,%rbx 403cea: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 403cef: f0 0f lock mov (bad),%db1 ====> GCC screws up this part 403cf1: 23 48 89 and -0x77(%rax),%ecx ==> and this 403cf4: 04 24 add $0x24,%al ====> and this 403cf6: 4c 8b 34 24 mov (%rsp),%r14 Is there a way to tell GCC that "F0 0F 23" is a unique instruction so it wouldn't mix it with other instructions? Thank you, -- Amir