1 #include <cstdint> 2 3 int main() { 4 constexpr uint32_t eax = 0x05060708; 5 constexpr uint32_t ebx = 0x15161718; 6 constexpr uint32_t ecx = 0x25262728; 7 constexpr uint32_t edx = 0x35363738; 8 constexpr uint32_t esp = 0x45464748; 9 constexpr uint32_t ebp = 0x55565758; 10 constexpr uint32_t esi = 0x65666768; 11 constexpr uint32_t edi = 0x75767778; 12 13 asm volatile( 14 // save esp & ebp 15 "movd %%esp, %%mm0\n\t" 16 "movd %%ebp, %%mm1\n\t" 17 "\n\t" 18 "movl %4, %%esp\n\t" 19 "movl %5, %%ebp\n\t" 20 "\n\t" 21 "int3\n\t" 22 "\n\t" 23 // restore esp & ebp 24 "movd %%mm0, %%esp\n\t" 25 "movd %%mm1, %%ebp\n\t" 26 : 27 : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "i"(esp), "i"(ebp), "S"(esi), 28 "D"(edi) 29 : "%mm0", "%mm1" 30 ); 31 32 return 0; 33 } 34