Skip to content

Commit 2296627

Browse files
committed
callee saved registers
1 parent 5a8d330 commit 2296627

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
_out/
22
_tmp/
33
*.tmp
4+
tmp.*
45

56
# Compiled Object files
67
*.slo
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/* https://stackoverflow.com/questions/18024672/what-registers-are-preserved-through-a-linux-x86-64-function-call/55207335#55207335 */
2+
3+
#include <inttypes.h>
4+
5+
uint64_t inc(uint64_t i) {
6+
__asm__ __volatile__(
7+
""
8+
: "+m" (i)
9+
:
10+
: "rax",
11+
"rbx",
12+
"rcx",
13+
"rdx",
14+
"rsp",
15+
"rsi",
16+
"rdi",
17+
"r8",
18+
"r9",
19+
"r10",
20+
"r11",
21+
"r12",
22+
"r13",
23+
"r14",
24+
"r15",
25+
"ymm0",
26+
"ymm1",
27+
"ymm2",
28+
"ymm3",
29+
"ymm4",
30+
"ymm5",
31+
"ymm6",
32+
"ymm7",
33+
"ymm8",
34+
"ymm9",
35+
"ymm10",
36+
"ymm11",
37+
"ymm12",
38+
"ymm13",
39+
"ymm14",
40+
"ymm15"
41+
);
42+
return i + 1;
43+
}
44+
45+
int main(int argc, char **argv) {
46+
(void)argv;
47+
return inc(argc);
48+
}

0 commit comments

Comments
 (0)