摘要: Linux.中断处理.入口x86平台entry_32.SLinux.中断处理.入口x86平台entry_32.S在保护模式下处理器是通过中断号和IDTR找到中断处理程序的入口地址的。IDTR存的是一个32位的IDT起始地址和一个16位的IDT长度,理论上IDTR和GDTR一样都能支持8192个中断门(65536字节),但x86只能支持256个中断,所以实际上IDTR的最大有效限长只是2048字节。在这256个中断中,前0×20个中断号被处理器保留用作陷阱(Trap)、故障(Fault)和终止(Abort)。而第0×80号中断号则被Linux用来提供作为用户层程序陷入内核的系 阅读全文
posted @ 2013-10-18 15:29 jeremyatchina 阅读(1555) 评论(0) 推荐(0) 编辑
摘要: 中断处理函数数组interrupt[]初始化2011-05-13 15:51:40分类:LINUX在系统初始化期间,trap_init()函数将对中断描述符表IDT进行第二次初始化(第一次只是建一张IDT表,让其指向ignore_intr函数),而在这次初始化期间,系统的0~19号中断(用于分NMI和异常的中断向量)均被设置好。与此同时,用于系统调用的0x80号向量也已被设置。然而,对于外部中断的初始化 却没有在这个函数中进行。而是在函数init_IRQ中。仔细想一想内核这样做,的确是使代码清晰又有条理。1)trap_init -----> 内部中断异常和NMI(中断向量号:0~19)2 阅读全文
posted @ 2013-10-18 14:36 jeremyatchina 阅读(597) 评论(0) 推荐(0) 编辑
摘要: Linux汇编语法简介(GNU GAS)声明:本教程不是介绍汇编语言和CPU指令的书籍,只是对gas的用法做一简单介绍。市面上所有讲汇编的书都是在微软的环境下,使用的是Intel的语法格式,因此,本教程的目的是想给在Linux下学习汇编的初级用户提供一些帮助。(详细请参阅 GNU GAS 手册)本人也是初学者,在以后的不断学习中,此教程也会慢慢修改,使得更加完善,希望阅读者给予宝贵意见。谢谢!一、 通用语法指令格式: 操作码 源操作数, 目的操作数(在有两个操作数的情况下)。常量表示: 在常量前加上$,例:$1$的另一种用法:用于符号时,表示的是一个首地址。例:string:.ascii &q 阅读全文
posted @ 2013-10-18 14:05 jeremyatchina 阅读(584) 评论(0) 推荐(0) 编辑