Linux虚拟机下switch语句汇编输出,数据传送使用栈指针

来源:互联网 发布:windows nt和2000 编辑:程序博客网 时间:2024/05/15 13:49

虚拟机下跑的Linux ,switch.c 使用gcc -Og -S switch.c 编译输出汇编语句:

cs app上关于数据传送说的是6个参数内,会使用寄存器传递参数。7+个参数才会使用栈指针,这个虚拟机跑的Linux几个参数都用的栈指针,难道虚拟机无法用寄存器?

switch函数:

#include <stdio.h>
int switcher(long a,long b,long c,long *dest){long val;switch (a){case 5:c=b^15;case 0:val=c+112;break;case 2:case 7:val=(b+c)<<2;break;case 4:val=a;break;default:val =b;}*dest =val;}
int main(){}

对应的汇编语句:switcher:.LFB23:.cfi_startprocmovl4(%esp), %eaxcmpl$7, %eaxja.L8jmp*.L4(,%eax,4).section.rodata.align 4.align 4.L4:.long.L3.long.L8.long.L5.long.L8.long.L2.long.L7.long.L8.long.L5.text.L7:movl8(%esp), %eaxxorl$15, %eaxmovl%eax, 12(%esp).L3:movl12(%esp), %eaxaddl$112, %eaxjmp.L2.L5:movl12(%esp), %eaxaddl8(%esp), %eaxsall$2, %eaxjmp.L2.L8:movl8(%esp), %eax.L2:movl16(%esp), %edxmovl%eax, (%edx)ret.cfi_endproc.LFE23:.sizeswitcher, .-switcher.globlmain.typemain, @functionmain:


                                             
0 0
原创粉丝点击