文档章节

Linux系统调用

itfanr
 itfanr
发布于 2015/06/08 20:45
字数 285
阅读 19
收藏 0

linux中是通过执行int $0x80来执行系统调用的,这条汇编指令产生向量为128的编程异常。

进程需要指定需要调用哪个系统调用,这需要传递系统调用号。​

系统调用需要输入输出参数,例如:

  • 实际的值
  • 用户态进程地址空间的变量的地址
  • 包含指向用户态函数的指针的数据结构的地址

system call是所有系统调用的入口点,每个系统调用至少有一个参数,即由eax传递的系统调用号。

一个应用程序调用fork()封装例程,那么在执行int $0x80之前就把eax寄存器的值置为2,即__NR_fork()

这个寄存器的设置是由libc库封装例程进行 进入system call后,立马将eax压栈

寄存器的限制: (1)每个参数的长度不能超过寄存器的长度,即32位 (2)在系统调用号(eax)之外,参数的个数不能超过6个( ebs ecs edx esi edi ebp )多余6个的话,需要用指针。

本文转载自:http://mooc.study.163.com/learn/USTC-1000029000?tid=1000037000#/learn/content?type=detail&id=1000...

共有 人打赏支持
itfanr
粉丝 114
博文 467
码字总数 165540
作品 1
济南
程序员
私信 提问
用brk实现sbrk,关于brk的返回值

首先我们已经知道linux下,malloc最后调用的是sbrk函数,而sbrk是对brk的简单封装。 用sbrk模仿malloc很简单,sbrk(0)得到当前breakpoint,再调用sbrk(size)即可。(PS:breakpoint表示堆结束地...

不写可以么
2013/07/25
0
0
微软内核团队披露 Windows Subsystem for Linux 细节

上月,微软正式宣布 Bash on Ubuntu on Windows 功能已经可通过 Windows Subsystem for Linux (WSL) 原生支持 Linux ELF64 二进制文件在 Windows 10 中执行。WSL 是由微软 Windows Kernel 团...

德国骨科院长
2016/04/25
9.1K
42
深入分析Windows和Linux动态库应用异同

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。 ...

晨曦之光
2012/03/02
83
0
[动态库]深入分析Windows和Linux动态库应用异同

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。 ...

龙宝宝
2011/08/05
0
0
【微信赠书活动】《Linux/UNIX系统编程手册》3本

【今日微信赠书活动】抽取3名幸运者分别赠出《Linux/UNIX系统编程手册》一本。 参与方法: 第一步:扫描下方二维码; 第二步:扫描后关注我们的微信公众账号; 第三步:回复书名 完成这三步即...

生气的散人
2014/09/05
481
3

没有更多内容

加载失败,请刷新页面

加载更多

推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
20分钟前
0
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
31分钟前
0
0
协议简史:如何学习网络协议?

大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应。并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背。 考试的时候,果然遇到这个问题,搜索枯肠,只能想...

Java干货分享
40分钟前
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linux-tao
今天
2
0
在 Ubuntu 上为 CentOS 编译 Rust 程序

现在 CentOS 8 还没出来,最新的是 CentOS 7.6,上面搭载的 glibc 版本是 2.17,都已经是 2012 年那时候的版本了。 现在开发者比较常用的桌面 Linux 系统,比如 Ubuntu / Debian / Mint / A...

helloclia
今天
18
3

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部