cppnow_presentations_2023/cppnow_slides/Under_the_Hood.pdf at main · boostcon/cppnow_presentations_2023 · GitHub

vdso

amd和intel使用了不同的指令来优化系统调用(int 80?)

为了统一,在linux上使用vdso这个中间层

此外,vdso能优化那些看上去没必要陷入内核的调用,如时间

auxv

在linux的进程初始化之后的栈上,在env之后还有一系列变量

调用约定

caller-stored

调用者caller保存,在函数调用之前由caller入栈保存

可以被callee直接自由使用

callee-stored

被调用者callee在使用这些寄存器之前入栈保存

数组到指针的隐式转换

int[]可以隐式转换成int*,即数组名自动转换为指向数组第一个元素的指针,除此以外的事不会发生,如以下:

int[a][b]可以隐式转换成int(*)[b],但不能int**

int**int[a][b]的内存布局是完全不同的