汇编高手帮忙看一下,linux是怎样运行汇编程序的?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
Nile
帖子: 990
注册时间: 2006-07-15 11:20
来自: 枫叶刀市

汇编高手帮忙看一下,linux是怎样运行汇编程序的?

#1

帖子 Nile » 2007-09-14 19:25

书上都说linux内核禁止用户程序直接对硬件操作,所有的操作都是通过内核调用来实现的,那么linux下的汇编程序显然就不能象windows和DOS一样直接对寄存器操作了(不知理解的对不对)

而汇编源程序里又没有定义systemcall,那么linux上汇编程序是怎么实现的呢?

问过我们老师,老师也说不清,只有上坛子里求援了,请达人们指点一二,多谢!
Thinkpad T400
GaRY
帖子: 101
注册时间: 2007-03-25 1:18

#2

帖子 GaRY » 2007-09-14 20:14

完全理解错误了
你对32位保护模式和实模式的汇编搞混了
不是windows和linux的区别,都是使用32位保护模式的操作系统,linux一样可以操作寄存器,不过不能执行ring0级别的指令,这个windows和linux是一样的。
关于系统调用,使用方法是类似dos编程调用过程的int 21中断一样,使用int $80中断。
具体再多看看书或者google下吧,加深点印象。
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#3

帖子 windwiny » 2007-09-14 20:19

汇编除了在内核里,和启动代码。。。。它们都操作硬件权限

几乎看不到应用程序是用汇编写的。。。
头像
Nile
帖子: 990
注册时间: 2006-07-15 11:20
来自: 枫叶刀市

#4

帖子 Nile » 2007-09-14 20:25

不是windows和linux的区别,都是使用32位保护模式的操作系统,linux一样可以操作寄存器,不过不能执行ring0级别的指令,这个windows和linux是一样的。
谢谢,在下对操作系统理解的不太深入,再练练再考虑这个问题吧。
Thinkpad T400
回复