1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 
5 // gcc -no-pie known_values_x64.c -o known_values_x64 -O0
6 
7 /* Expected registry values at breakpoint 0x004011fa
8 
9 rax = 0x3ec373b4667e84c0
10 rbx = 0xa602acd4c227da1d
11 rcx = 0x8807e4e63e154dbd
12 rdx = 0x7644b4b3b2bd76ad
13 rsi = 0x73b245d4fe9f7039
14 rdi = 0xab648b4505db20b6
15 r8  = 0xcdc3550dc8584425
16 r9  = 0xe3efe87851d603f5
17 r10 = 0x7c34483ec98d7bb7
18 r11 = 0xb4b176ca868be1ed
19 r12 = 0xf418c58fa13e485c
20 r13 = 0x1803882a9c2c801a
21 r14 = 0xecedb671e137e92f
22 r15 = 0x9dce02118db26baa
23 
24 xmm0 = 0x43e6ca2beab80cd143defc418b1477ce
25 st7  = 0x3ffee8e8276e6a138800
26 */
27 
28 typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
29 typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
30 
31 char my_uninit_global[32];
32 char my_init_global[] = "Test string 1";
33 
main()34 int main() {
35     char my_stack_var[] = "Test string 2";
36     __m128d a2 = { 0x7bf1062c51df3839L, 0xb6515f55c0668847L };
37     long double floater = 0.9097923893514929;
38 
39     __asm__("mov $0x3ec373b4667e84c0, %rax;"
40             "mov $0xa602acd4c227da1d, %rbx;"
41             "mov $0x8807e4e63e154dbd, %rcx;"
42             "mov $0x7644b4b3b2bd76ad, %rdx;"
43             "mov $0x73b245d4fe9f7039, %rsi;"
44             "mov $0xab648b4505db20b6, %rdi;"
45             "mov $0xcdc3550dc8584425, %r8;"
46             "mov $0xe3efe87851d603f5, %r9;"
47             "mov $0x7c34483ec98d7bb7, %r10;"
48             "mov $0xb4b176ca868be1ed, %r11;"
49             "mov $0xf418c58fa13e485c, %r12;"
50             "mov $0x1803882a9c2c801a, %r13;"
51             "mov $0xecedb671e137e92f, %r14;"
52             "mov $0x9dce02118db26baa, %r15;"
53             );
54 }
55