编译原理及实践 附录 源代码 本书英文名:Compiler Construction: Principles and Practice 作者:Kenneth C.Louden 电子书中文版下载地址:http://download.csdn.net/detail/bbeikke/4794677 电子书英文版下载地址:http://download.csdn.net/detail/bbeikke/4847099
2024-02-18 20:06:21 58KB 编译原理 编译原理实验
1
目 录 献辞 致谢 序(一) 序(二) 历史注记 上篇 UNIX操作系统版本6源代码 UNIX操作系统过程分类索引 3 UNIX操作系统文件及过程 5 UNIX操作系统定义的符号列表 7 UNIX操作系统源代码交叉引用列表 9 第一部分 初始化、进程初始化 25 第二部分 陷入、中断、系统调用和 进程管理 75 第三部分 程序交换、基本输入/输出、 块设备 109 第四部分 文件和目录、文件系统、管道 133 第五部分 面向字符的特殊文件 181 下篇 莱昂氏UNIX源代码分析 前言 207 第1章 绪论 209 1.1 UNIX操作系统 209 1.2 公用程序 209 1.3 其他文档 210 1.4 UNIX程序员手册 210 1.5 UNIX文档 211 1.6 UNIX操作系统源代码 211 1.7 源代码中各部分 212 1.8 源代码文件 212 1.9 分析的使用 212 1.10 对程序设计水平的一条注释 212 第2章 基础知识 214 2.1 处理机 214 2.2 处理机状态字 214 2.3 通用寄存器 214 2.4 指令集 215 2.5 寻址方式 216 2.5.1 寄存器方式 217 2.5.2 寄存器延迟方式 217 2.5.3 自动增1方式 217 2.5.4 自动减1方式 217 2.5.5 变址方式 217 2.5.6 立即方式 218 2.5.7 相对方式 218 2.6 UNIX汇编程序 219 2.7 存储管理 219 2.8 段寄存器 220 2.9 页说明寄存器 220 2.10 存储分配 220 2.11 状态寄存器 221 2.12 “i”和“d”空间 221 2.13 启动条件 221 2.14 专用设备寄存器 221 第3章 阅读“C”程序 222 3.1 某些选出的例子 222 3.2 例1 222 3.3 例2 223 3.4 例3 223 3.5 例4 225 3.6 例5 225 3.7 例6 227 3.8 例7 227 3.9 例8 228 3.10 例9 228 3.11 例10 229 3.12 例11 229 3.13 例12 230 3.14 例13 230 3.15 例14 231 3.16 例15 231 3.17 例16 232 3.18 例17 233 第4章 概述 235 4.1 变量分配 235 4.2 全局变量 235 4.3 “C”预处理程序 235 4.4 第一部分 236 4.4.1 第1组“.h”文件 236 4.4.2 汇编语言文件 237 4.4.3 在第一部分中的其他文件 237 4.5 第二部分 237 4.6 第三部分 238 4.7 第四部分 238 4.8 第五部分 239 第一部分 初始化、进程初始化 第5章 两个文件 241 5.1 文件malloc.c 241 5.1.1 列表维护规则 241 5.1.2 malloc(2528) 242 5.1.3 mfree(2556) 243 5.1.4 结论 244 5.2 文件prf.c 244 5.2.1 printf(2340) 244 5.2.2 printn(2369) 245 5.2.3 putchar(2386) 246 5.2.4 panic(2419) 247 5.2.5 prdev(2433)、deverror(2447) 247 5.3 包含的文件 247 第6章 系统初启 249 6.1 操作员的动作 249 6.2 start(0612) 249 6.3 main(1550) 251 6.4 进程 252 6.5 proc〔0〕的初始化 252 6.6 sched(1940) 253 6.7 sleep(2066) 253 6.8 swtch(2178) 253 6.9 再回到main 254 第7章 进程 256 7.1 进程映像 256 7.2 proc结构(0358) 257 7.3 user结构(0413) 257 7.4 每个进程数据区 258 7.5 段 258 7.6 映像的执行 258 7.7 核心态执行 259 7.8 用户态执行 259 7.9 一个实例 259 7.10 设置段寄存器 260 7.11 estabur(1650) 260 7.12 sureg(1739) 261 7.13 newproc(1826) 261 第8章 进程管理 263 8.1 进程切换 263 8.2 中断 263 8.3 程序交换 263 8.4 作业 264 8.5 汇编语言过程 264 8.6 savu(0725) 264 8.7 retu(0740) 264 8.8 aretu(0734) 264 8.9 swtch(2178) 265 8.10 setpri(2156) 265 8.11 sleep(2066) 266 8.12 wakeup(2133) 266 8.13 setrun(2134) 266 8.14 expand(2268) 267 8.15 再回到swtch 267 8.16 临界区 268 第二部分 陷入、中断、系统调用 和进程管理 第9章 硬件中断和陷入 269 9.1 硬件中断 269 9.2 中断矢量 270 9.3 中断处理程序 270 9.4 优先级 270 9.5 中断优先级 271 9.6 中断处理程序的规则 271 9.7 陷入 272 9.8 汇编语言trap 272 9.9 返回 273 第10章 汇编语言“trap”例程 274 10.1 陷入和中断源 274 10.2 fuibyte(0814)与fuiword(0844) 274 10.3 中断 275 10.4 call(0776) 275 10.5 用户程序陷入 276 10.6 核心态栈 277 第11章 时钟中断 279 11.1 clock(3725) 279 11.2 timeout(3845) 281 第12章 陷入与系统调用 282 12.1 trap(2693) 282 12.2 核心态陷入 282 12.3 用户态陷入 283 12.4 系统调用 284 12.5 系统调用处理程序 285 12.6 文件sys1.c 285 12.6.1 exec(3020) 285 12.6.2 fork(3322) 286 12.6.3 sbreak(3354) 286 12.7 文件sys2.c和sys3.c 287 12.8 文件sys4.c 287 第13章 软件中断 288 13.1 设置期望动作 288 13.2 对进程造成中断 288 13.3 作用 289 13.4 跟踪 289 13.5 过程 289 13.5.1 期望动作的设置 289 13.5.2 造成软件中断 289 13.5.3 作用 289 13.5.4 跟踪 290 13.6 ssig(3614) 290 13.7 kill(3630) 290 13.8 signal(3949) 290 13.9 psignal(3963) 291 13.10 issig(3991) 291 13.11 psig(4043) 291 13.12 core(4094) 292 13.13 grow(4136) 292 13.14 exit(3219) 292 13.15 rexit(3205) 293 13.16 wait(3270) 293 13.17 跟踪 293 13.18 stop(4016) 294 13.19 wait(3270)(继续) 294 13.20 ptrace(4164) 295 13.21 procxmt(4204) 295 第三部分 程序交换、基本输入 /输出、块设备 第14章 程序交换 297 14.1 正文段 297 14.2 sched(1940) 298 14.3 xswap(4368) 299 14.4 xalloc(4433) 299 14.5 xfree(4398) 300 第15章 基本输入/输出介绍 301 15.1 buf.h文件 301 15.2 devtab(4551) 301 15.3 conf.h文件 301 15.4 conf.c文件 302 15.5 系统生成 302 15.6 swap(5196) 302 15.7 竞态条件 303 15.8 可重入 304 15.9 继续分析“u.u_ssav” 304 第16章 RK磁盘驱动器 305 16.1 控制状态寄存器RKCS 306 16.2 字计数寄存器RKWC 306 16.3 磁盘地址寄存器RKDA 306 16.4 rk.c文件 306 16.5 rkstrategy(5389) 306 16.6 rkaddr(5420) 307 16.7 devstart(5096) 307 16.8 rkintr(5451) 307 16.9 iodone(5018) 308 第17章 缓存处理 309 17.1 标志 309 17.2 一个类超高速缓存存储 309 17.3 clrbuf(5038) 309 17.4 incore(4899) 310 17.5 getblk(4921) 310 17.6 brelse(4869) 310 17.7 binit(5055) 311 17.8 bread(4754) 312 17.9 breada(4773) 312 17.10 bwrite(4809) 312 17.11 bawrite(4856) 313 17.12 bdwrite(4836) 313 17.13 bflush(5229) 313 17.14 physio(5259) 313 第四部分 文件和目录、文件 系统、管道 第18章 文件存取和控制 315 18.1 源代码第四部分 315 18.2 文件特征 315 18.3 系统调用 316 18.4 控制表 316 18.4.1 file(5507) 316 18.4.2 inode(5659) 316 18.5 要求专用的资源 317 18.6 打开一个文件 317 18.7 creat(5781) 317 18.8 open1(5804) 317 18.9 open(5763) 318 18.10 再回到open1 318 18.11 close(5846) 318 18.12 closef(6643) 319 18.13 iput(7344) 319 18.14 删除文件 319 18.15 读和写文件 319 18.16 rdwr(5731) 320 18.17 readi(6221) 321 18.18 writei(6276) 322 18.19 iomove(6364) 322 18.20 bmap(6415) 322 18.21 剩余部分 322 第19章 文件目录和目录文件 323 19.1 文件名 323 19.2 目录数据结构 323 19.3 目录文件 323 19.4 namei(7518) 324 19.5 一些注释 325 19.6 link(5909) 326 19.7 wdir(7477) 327 19.8 maknode(7455) 327 19.9 unlink(3510) 327 19.10 mknod(5952) 327 19.11 access(6746) 328 第20章 文件系统 329 20.1 超级块(5561) 329 20.2 mount表(0272) 329 20.3 iinit(6922) 330 20.4 安装 330 20.5 smount(6086) 330 20.6 注释 331 20.7 iget(7276) 331 20.8 getfs(7167) 332 20.9 update(7201) 332 20.10 sumount(6144) 333 20.11 资源分配 333 20.12 alloc(6956) 334 20.13 itrunc(7414) 334 20.14 free(7000) 335 20.15 iput(7344) 335 20.16 ifree(7134) 335 20.17 iupdat(7374) 335 第21章 管道 337 21.1 pipe(7723) 337 21.2 readp(7758) 337 21.3 writep(7805) 338 21.4 plock(7862) 338 21.5 prele(7882) 338 第五部分 面向字符的特殊文件 第22章 面向字符的特殊文件 339 22.1 LP11行式打印机驱动程序 339 22.2 lpopen(8850) 340 22.3 注释 340 22.4 lpoutput(8986) 340 22.5 lpstart(8967) 341 22.6 lpint(8976) 341 22.7 lpwrite(8870) 342 22.8 lpclose(8863) 342 22.9 讨论 342 22.10 lpcanon(8879) 342 22.11 对读者的建议 343 22.12 PC11纸带阅读机/穿孔机驱动 程序 344 第23章 字符处理 345 23.1 cinit(8234) 346 23.2 getc(0930) 346 23.3 putc(0967) 347 23.4 字符集 347 23.5 图形字符 348 23.6 UNIX惯例 349 23.7 maptab(8117) 349 23.8 partab(7947) 349 第24章 交互式终端 351 24.1 接口 351 24.2 tty结构(7926) 351 24.3 注释 352 24.4 初始化 352 24.5 stty(8183) 352 24.6 sgtty(8201) 353 24.7 klsgtty(8090) 353 24.8 ttystty(8577) 353 24.9 DL11/KL11终端设备处理程序 353 24.10 设备寄存器 354 24.11 接收器状态寄存器 354 24.12 接收器数据缓存寄存器 354 24.13 发送器状态寄存器 354 24.14 发送器数据缓存寄存器 354 24.15 单总线地址 354 24.16 软件方面的考虑 355 24.17 中断矢量地址 355 24.18 源代码 355 24.19 klopen(8023) 355 24.20 klclose(8055) 356 24.21 klxint(8070) 356 24.22 klrint(8078) 356 第25章 tty.c文件 357 25.1 flushtty(8252) 357 25.2 wflushtty(8217) 357 25.3 字符输入 358 25.3.1 ttread(8535) 358
2024-02-18 18:01:58 9.56MB unix
1
学生管理系统是面向中小学信息化管理的一套学生管理系统。主要实现中小学校信息化学生管理的功能,包括年级、班级、学生、教师、学生成绩管理。本系统是构建于Microsoft .NET Framework平台上的ASP.NET Web程序,采用应用前景广阔的XML技术存储数据,具有平台构建免费、运行速度快、程序小、扩展性好、技术先进等特点。
2024-02-13 22:19:53 415KB asp.net
1
运行环境: VS2005开发环境 SQL2000数据库 管理员账号:zcj 密码:zcj 学生信息管理系统源码: 1.本学生信息管理系统有学生信息管理、课程信息管理、成绩信息管理、密码修改、帮助说明、重新登录等等页面 2.学生信息包含项有学号、姓名、性别、民族、出生日期、入学时间、班级、生源、备注,可进行相关的编辑、删除、添加、查询等等操作。 3.课程信息包含项有课程号、课程名、课时、学分、课程类型,可进行相关的编辑、删除、添加、查询等等操作。 4.成绩信息包含项有学号、姓名、班级、课程号、课程名、任课老师、成绩,可进行相关的编辑、删除、添加等等操作。 5.密码修改功能,可以修改管理员的密码
2024-02-13 22:10:17 1004KB asp.net
1
之前买了一本《C#入门经典》(第5版),发现没有书中的代码,后来在书上发现下载地址,特此下载下来分享给大家【里面包含所有书中的源代码】
2024-02-13 21:57:56 4.33MB 入门经典
1
学数值分析时,用c++编写的一个用于计算三体问题的程序。 可能有人用得着。
2024-02-11 15:42:27 5KB 数值分析
1
JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)
2024-02-08 01:25:44 843KB java 毕业设计
1
摘要:Delphi源码,控件组件,TDBNavigator Delphi仿TDBNavigator组件功能的例子,用来浏览数据库的一个组件,网格控件,可上一条、下一条并分页浏览access中的内容,还可以添加、编辑、删除、修改数据库的内容,模拟TDBNavigator组件所实现的功能。 运行环境:Delphi+Access
2024-02-07 20:06:10 223KB Delphi源代码 控件组件
1
《精通Javascript+jquery》(源代码)开始传的那个不全请大学下这个吧很好的入门学习
1
《武汉人·公交查询系统1.0》开发技术文档 曾劲松 2005/6/5 《武汉人·公交查询系统》是一款基于武汉市电子地图的公交线路查询系统,它允许你非常方便地搜寻武汉市从甲地到乙地的行车线路并将行车线路在地图上绘制出来,快速准确地查找离某地最近的公交站,查找某公交站的位置,查看某公交线路所经过的站名并绘制于地图之上,在后续版本中将增加搜索其他地理位置(公司、企业、医院、学校、商场等等……)。 本程序核心技术: 1. 完全采用面向对象的编程方法。因为本程序设计到很多矢量图绘制,所以最适合采用面向对象的方法来开发了。有几个重要的类说明如下: 1> 交通图元类。这是所有交通元素类的基类,包含了名称、颜色、描述、是否被选中等几个属性和绘制到内存位图、绘制到画板等几个方法。 2> 点图元类。该类用来描述仅仅用于定位的交通元素,比如公交站、学校、企业等,该类继承自交通图元类,新增加有 取横坐标,取纵坐标,置横坐标,置纵坐标,取边界矩形等方法。 3> 公交站类。该类用来描述公交站,继承自点图元类。增加了 从字符串创建、取点半径、置点半径、取字体大小、置字体大小、绘制到画板、绘制到内存位图等方法。 4> 公交线路类。本类用来描述公交线路,提供了以下方法:查询公交站在公交线路中的索引、从数字字符串创建、绘制到内存位图、取边界矩形、取公交线路号、取公交站编号、取经过的公交站名、取数字化的线路文本、是否经过某公交站等。 5> 连通线路类。本类用来描述两个公交站之间的连通线路,提供了 绘制到内存位图、取边界矩形、取详细信息、是否要专车、检验索引、置公交线路一、置公交线路二、置线路一起止索引、置线路二起止索引、重置等方法。 6> 视图历史类。本来用来记录视图书签,提供以下方法:清除视图历史、取当前视图、取当前索引、取视图、取视图名称、取视图总数、删除当前视图、上一视图、是否可删除视图、是否有上一视图、是否有下一视图、跳到视图、下一视图、显示于列表框、置视图名称、追加视图等。 7> 内存位图类。本来用来增强易语言自身的画板,因为易语言自身的画板未提供绘制EMF文件和EMF字节集的方法,所以专门写了这个类。这个类很多方法跟易语言自身的画板差不多,扩展的方法有 创建位图、复制到画板、复制到画布、洪水填充、画EMF文件、画EMF字节集、画多边形点数组、画多义线点数组、画多边形横纵坐标数组、画多义线横纵坐标数组、画曲线点数组、画曲线横纵坐标数组、绘制文本在矩形内、拉伸复制到画板、拉伸复制到画布、取高度、取宽度、取画布句柄、取位图句柄、实色填充、置画笔属性、置交叉线画刷、置实色画刷、置文本属性等。主要增加了两个画EMF的方法和画曲线的方法。 8> 图层类。本类用来组织各种交通图元,只可惜易语言目前尚不支持方法覆盖和强制类型转换,不得已采用全局数组来替换它了。 2. 矢量图形绘制技术。在程序中要绘制地图,显然地图不能直接使用位图,因为要无限放大,要分层叠加,而且始终清晰,这样就必然要使用矢量图形技术。幸好Windows 已经为我们提供了操作矢量图形 EMF文件的相关函数,这里我已将其封装到内存位图中去了。 3. 快速的路径寻找。在实际乘坐公交的过程中,难免会有转车的现象发生。本程序通过建立公交站索引的方法,能够快速搜索出所有的直达车或一次转车线路,通常这已经能够满足需求,能够搜索出可行的乘车方案。对于两次或两次以上的转车方案,本程序没有实现,一方面实现起来难度大,另一方面也没有必要,因为在实际乘车的过程中,极少有要转两次车的情况。 4. 方便的数据库维护。对于一个公交查询(或曰电子地图)系统来说,数据量之大是可想而知的。偌大一个城市,一个人不可能完全了解其公交站和公交线路的分布情况,况且公交线路也经常处于变化之中,所以本程序提供了灵活的方法允许用户自己来维护数据库的方便方法。具体操作方法请查看本软件帮助。 源代码总共3600行。 本程序需要易语言4.0以上版本才可以使用: 易语言 V5.1 完美破解版下载: 软件大小: 102.25 MB Win7 / Vista / Win2003 / WinXP / Win2000 http://www.xiazaiba.com/html/409.html http://xiazai.xiazaiba.com/Soft/E/e_V5.1_XiaZaiBa.exe 易语言资源网 http://zy.dywt.com.cn/index.asp 源代码交易网 http://www.ydmjy.com/
2024-02-06 07:33:53 806KB
1