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