brintos

brintos / llvm-project-archived public Read only

0
0
Text · 775 B · 4fb725d Raw
34 lines · cpp
1#include <cstdint>2 3int 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 & ebp15    "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 & ebp24    "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