• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Linux内核系列—7.操作系统开发之中断和异常,linux内核

Linux内核系列—7.操作系统开发之中断和异常,linux内核

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了linux操作系统内核,linux内核 文件操作,linux内核,深入理解linux内核,linux内核完全注释等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Linux内核系列—7.操作系统开发之中断和异常,linux内核


a.概述

中断门和陷阱门的作用机理几乎是一样的,只不过使用调用门时使用call指令,而这里我们使用int指令。中断门和陷阱门的结构如下图:

TYPE的4位将变为0xE(中断门)或0xF(陷阱门)。

指令int n产生中断时的情形如下图所示,n即为向量号,它类似于调用门的使用。

 

 

b.建立IDT

; IDT
[SECTION .idt]
ALIGN	32
[BITS	32]
LABEL_IDT:
; 门                        目标选择子,            偏移, DCount, 属性
%rep 255
		Gate	SelectorCode32, SpuriousHandler, 0, DA_386IGate
%endrep

IdtLen		equ	$ - LABEL_IDT
IdtPtr		dw	IdtLen - 1	; 段界限
		dd	0		; 基地址
; END of [SECTION .idt]

每个描述符都设置为指向SelectorCode32:SpuriousHandler的中断门。

; 为加载 IDTR 作准备
	xor	eax, eax
	mov	ax, ds
	shl	eax, 4
	add	eax, LABEL_IDT		; eax <- idt 基地址
	mov	dword [IdtPtr + 2], eax	; [IdtPtr + 2] <- idt 基地址

; 关中断
	cli

	; 加载 IDTR
	lidt	[IdtPtr]

c.实现一个中断

	call	Init8259A
	int	080h

运行结果如下:

接下来修改IDT,把第80h号中断单独列出来。

; IDT
[SECTION .idt]
ALIGN	32
[BITS	32]
LABEL_IDT:
; 门                        目标选择子,            偏移, DCount, 属性
%rep 128
		Gate	SelectorCode32, SpuriousHandler, 0, DA_386IGate
%endrep
.080h:		Gate	SelectorCode32, UserIntHandler,  0, DA_386IGate

IdtLen		equ	$ - LABEL_IDT
IdtPtr		dw	IdtLen - 1	; 段界限
		dd	0		; 基地址
; END of [SECTION .idt]

运行结果如下:

 

 

一个码农的日常 

【源码】

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux内核系列—7.操作系统开发之中断和异常,linux内核
  • Linux内核系列—操作系统开发之保护模式的优势,linux内核

相关文章

  • 2017-05-26Cheatsheet: 2017 04.01 ~ 04.30,cheatsheet04.30
  • 2017-05-26一个特别适合新手练习的Android小项目——每日一妹纸
  • 2017-05-26仿《雷霆战机》飞行射击手游开发--防破解,《雷霆战机》射击手
  • 2017-05-26Vs2017 无法调试APP,Vs2017调试APP
  • 2017-05-26关于eclipse android 在manifest改app应用包名注意事项,androidmanifest
  • 2017-05-26Android 性能分析工具之 TraceView 使用说明
  • 2017-05-26安卓开发中内存问题分析(一)工具篇
  • 2017-05-26开启新的activity获取它的返回值,activity获取返回值
  • 2017-05-26Android Studio 之 注释模板,androidstudio
  • 2017-05-26Android 第一http请求访问慢,以后就快了的问题,android请求

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 【lushengduan】03、点击事件的四种实现方式,lushengduan03
    • php迁移遇到的问题
    • Linux内核系列—11.操作系统开发之ELF格式,linuxelf
    • android:Activity启动模式之singleInstance
    • Android常用学习网站,android
    • 编译器开发系列--Ocelot语言7.中间代码,编译器--ocelot
    • android开发之路05,android之路05
    • 静态变量的陷阱,静态变量陷阱
    • android开发之路01,android之路01
    • 如何为APK签名?,APK签名?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有