|
发表于 2020-8-9 23:45:01
|
显示全部楼层
_alloca 就是在 栈上分配空间, C99 的变长数组就是用这个, 有了这个就很难用 esp 定位局部变量和参数 ...
这样应该性能会稍微好点吧, 也多出个寄存器可以用,不过好像没见过M$生成的代码里用过 ebp ...
void foo( int a ) { int a[100] ; a = 1 ; }
-------------------------------------------------
esp -= 400;
*(esp + 400 + 4) = 1;
esp += 400;
ret;
比标准的栈帧少了条指令, 不过往栈里压入数据后, 所有的局部变量和参数的偏移都会改变, 编译器实现起来比较麻烦些 ....
|
|