linux下32位汇编调用规则
来源:互联网 发布:人工智能的坏处 编辑:程序博客网 时间:2024/05/16 06:25
传递给系统调用的参数必须安装参数顺序一次放到寄存器中,当系统调用完成后,返回值放在eax中:
- 当系统调用参数<=5个时:
eax中存放系统调用的功能号,传递给系统调用的参数顺序依次放到寄存器:ebx,ecx,edx,esi,edi中 - 当系统调用参数>5个时:
eax中存放系统调用的功能号,全部参数应依次放在一块连续的内存区域中,同时在寄存器ebx中保存指向该内存区域的指针(内存块的首地址);linux采用的是C调用模式,这意味着如果要以stack来实现这个连续的内存块(当然可以用其他方式实现,比如heap)时,所有参数必须以相反的顺序进栈:即最后一个参数最先进栈,第一个参数最后进栈,最后将栈指针的值(栈顶地址)放到寄存器ebx中。
C库函数的参数传递规则:
- 参数从右向左一次入栈(push);
- 库函数返回值放在eax中;
- 系统调用exit参数值在exit调用结束程序退出时会被传递给系统shell,通过打印$?的值可以看到
汇编函数的返回值:
- 对于32位返回值放在寄存器eax中
- 对于64位返回值,高位放在edx,低位放在eax中
本篇未给出浮点数值的调用和返回规则,虽然略知一二,但没有系统化的认识,不敢乱写;如各位有相关的完整文档请不吝赐教帮助补全,谢谢。
0 0
- linux下32位汇编调用规则
- linux下64位汇编的系统调用(1)
- linux下64位汇编的系统调用(2)
- linux下64位汇编的系统调用(3)
- linux下64位汇编的系统调用(4)
- linux下64位汇编的系统调用(5)
- linux下32位汇编hello, world!
- linux系统调用64位汇编与32位汇编不同及兼容
- linux-32位汇编
- 64位汇编之linux系统调用
- Linux X86_64下的32位汇编环境
- Linux 下的64位汇编
- Mac OS X下64位汇编与Linux下64位汇编的一些不同
- 64位linux 汇编
- 64位Linux汇编
- 64位Linux汇编
- 32位linux系统调用
- arm汇编函数调用参数传递规则
- oracle pl/sql 实战学习 -避免误用
- Android开发:SurfaceView基本用法总结
- 流量稳定也会有排名不稳定的情况吗?
- 【python实现】ip转换为Long类型
- 对象 文件的读写
- linux下32位汇编调用规则
- EditText失去焦点避免弹出输入框影响美观方法
- 网站的排名一下子掉下去了是什么问题/
- NetBeans下MinGW和msys的安装与配置
- MotionEvent的getX()与getRawX()区别
- 博弈论经典例子
- stm32 DMA 的 buffersize 意义与设置
- 网站首页的收录不见了是什么原因
- char* char[] string cstring 的区分和转换(一)