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

为当前最终发行版之前的所有版本提供支持
回复
头像
Nile
帖子: 990
注册时间: 2006-07-15 11:20
来自: 枫叶刀市
送出感谢: 2 次
接收感谢: 0

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

#1

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

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

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

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

#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
送出感谢: 0
接收感谢: 1 次

#3

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

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

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

#4

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

不是windows和linux的区别,都是使用32位保护模式的操作系统,linux一样可以操作寄存器,不过不能执行ring0级别的指令,这个windows和linux是一样的。


谢谢,在下对操作系统理解的不太深入,再练练再考虑这个问题吧。
Thinkpad T400
回复

回到 “老旧版本支持”