Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1936233
  • 博文数量: 77
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2491
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-20 20:49
个人简介

欢迎光临我的博客

文章分类

全部博文(77)

文章存档

2023年(1)

2018年(4)

2017年(1)

2016年(2)

2015年(2)

2013年(5)

2012年(29)

2010年(33)

分类: 系统运维

2012-04-02 10:39:30

谢谢你能这么仔细的阅读本书,请参见回复如下。
郝庆丰

From: quntmec@hotmail.com
To: qf.hao@hotmail.com
Subject: 关于《UNIX技术内幕》的勘误及遇到的问题_5
Date: Wed, 12 Oct 2011 17:30:53 +0800

郝先生,

1、对于83页的_retu()函数,我有一个疑问,如下:

83页代码第18行:

(1)mov (sp) , KISA6

根 据书里61页倒数第2行对KISA6的定义(并赋值),可以看出KISA6应该是一个变量(不同于C语言里用#define定义的宏),对于(1),我的 理解是KISA6这个寄存器的内容改变了(而不是KISA6这个寄存器本身的地址(8进制:172354)改变了),使u的最终指向改变了。是这样吗?

之所以有这样的疑问,那是因为根据61页代码第18行到22行,可以看出对KISA6的初始化如下(主要是第21句):
郝:对。
(2)mov r2, (r0)+

对于(2)进行一个简单的替代,如下:

(2-new)mov r2, ($KISA6)+

那对于(1),也做一个替代,如下:

(1-new)mov (sp) , ($KISA6)

我感觉(1)与(1-new)应该是等价的,是这样吗?
郝:这里涉及到汇编的语法,$KISA6代表的是立即数,($KISA6)原理上讲是代表了地址,所以这样写也是对的。
但由于KISA6实际是一个寄存器,所以书中可以直接对它赋值。它类似于mov (sp), r0


2、有关PS寄存器

83页,_savu()函数的第3行和第8行,如下:

(1)bis $340, PS
(2)bic $340, PS  // 开中断

对于(1),是否就是一般意义上说的关中断(即关闭所有可屏蔽中断)?
郝:对。但不能关闭自陷,关于自陷,请参见第7章。

3、勘误

内容
84 1 1 r5=[p1]应为p[1]
85 6 1 runin也是进程换入换出过程…..runin应为runout,因为上一段已说明过runin

郝:对。








Steve


《返璞归真--UNIX技术内幕》
阅读(4445) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~