Blog

A20Line

Content #

早先8086的地址线只有20位(A0-A19),每次当物理地址到达最高端0xFFFFF时,再加1的话,地址会绕回0x00000。部分程序员的代码依赖了这个特性,为了兼容旧的程序,IBM-AT(Intel 286)在默认情况下关闭了这条地址线。

IBM公司用一个与门来控制第21根地址线A20,并把这个与门的控制阀门放在键盘控制器内,端口号是0x60。

不过,这种做法很烦琐,因为要访问键盘控制器,需要先判断状态,等键盘控制不忙。需要至少十几个步骤。

从80486开始,处理器有了A20M#引脚,意思是A20屏蔽(A20 Mask)。

输出输出控制器集中芯片ICH中有一个用于兼容老式设备的端口0x92。其第1位叫做替代的A20门控制(Alternate A20 Gate, ALT_A20_GAGE),它和老式的来自键盘控制器的A20控制线一起,通过或门连接到处理器的A20#引脚。通过0x92端口非常迅速,因此称为Fast A20。

0x92的第0位称为INIT_NOW,当它从0过渡到1时,ICH芯片会使用处理器INIT#引脚的电平变低(有效),并至少保持16个PCI时钟周期。向这个位置写入1,会引起处理器复位。而且会将ALT_A20_GATE置为1.也就是说,第21根线会自动启用。

Fast A20 Gate用于快速打开这条地址线。打开的汇编代码如下:

in al, 0x92
or al, 2
out 0x92, al

Viewpoint #

From #

A20_Line

toc:Assembly

硬件 #

硬盘的CHS和LBA LBA28 LBA转换为CHS公式 A20Line 南北桥芯片 北桥、南桥、前端FSB等相关概念。 总线与南桥 回车与换行

BIOS #

显卡文本模式 BIOS的0x13中断 重置磁盘驱动器(0x13,ah=00h) 设置屏幕光标位置(0x10,ah=02h) 滚动窗口(0x10,ah=06h) 显示字符串(0x10,ah=13h)

内存管理 #

开启MMU 获取内存视图 BSS名字起源 帧指针(Frame Pointer) i386函数体的标准开头 i386函数体的标准结尾

Linux Assembly #

伪指令 stdcall调用约定 cdecl调用约定 过程调用中前6个参数的寄存器顺序 Linux64环境下32位汇编注意事项 nop函数的定义 关闭和打开中断 使用不同的寄存器别名的注意事项 Local Labels 常见的C语言调用惯例

NASM #

SECTION段定义语句中使用vstart子句

编程技巧 #

8位字节对齐 用xor清零

编程语言内存管理 #

观察CPP中虚函数的虚表

bochs调试汇编代码 #

Subtopics #

toc:x86_64 sub:Extended Asm in GCC sub:gas

硬盘的CHS和LBA

Content #

CHS #

有了扇区(sector),有了柱面(cylinder),有了磁头(head),显然可以定位数据了,这就是数据定位(寻址)方式之一,CHS(也称3D),对早期的磁盘非常有效,知道用哪个磁头,读取哪个柱面上的第几扇区就OK了。

CHS模式支持的硬盘容量有限,用8bit来存储磁头地址,用10bit来存储柱面地址,用6bit来存储扇区地址,而一个扇区共有512Byte,这样使用CHS寻址一块硬盘最大容量为256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按 1MB=1000000B来算就是8.4GB)

LBA #

LBA(Logical Block Addressing)。在LBA地址中,地址不再表示实际硬盘的实际物理地址(柱面、磁头和扇区)。LBA编址方式将CHS这种三维寻址方式转变为一维的线性寻址,它把硬盘所有的物理扇区的C/H/S编号通过一定的规则转变为一线性的编号,系统效率得到大大提高,避免了烦琐的磁头/柱面/扇区的寻址方式。在访问硬盘时,由硬盘控制器再将这种逻辑地址转换为实际硬盘的物理地址。

LBA下的编号,扇区编号是从0开始。逻辑扇区号LBA的公式: LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1

例如:CHS=0/0/1,则根据公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1= 0

也就是说物理0柱面0磁头1扇区,是逻辑0扇区。

Viewpoint #

From #

sub:卢曼卡片

Content #

配对交易

Content #

什么是配对交易?

两个基本面非常接近(所属行业相同,行业地位相当)的公司,它们的股票价格应该有“均值回复”的特征。什么叫均值回复呢?放在这里,就是说这两个公司的股价在长期来看,应该维持在一个很稳定的比值之上。既然这样,那在两只股票的价格对比出现明显偏离的时候,我们就可以通过配对交易的逻辑,来赚取它们股价回复的钱。

我们假设有这样两只股票:它们背后都是已经稳定运营超过 30 年的航空公司,分别是公司 A 和公司 B。这两只股票的基本面情况几乎一样,市值比也基本维持在 1:1 上下。但是,由于市场上的一些短期因素,这两个公司的股票价格发生了偏离,公司 A 的股价上涨了,它们的市值比变成了 1.5:1。那这个时候,如果你认为长期来看这两只股票的基本面依然没有本质差别,那就可以通过做空公司 A 股票,做多公司 B 股票来进行配对交易,赚取它们价值回复的钱。

而且,配对交易的策略效果跟行业的波动完全没有关系,因为对两只股票做多和做空的配对操作,对冲掉了行业涨跌的风险。这就是对冲思想的神奇之处了:它只会暴露于我们想暴露的风险敞口,不会受行业整体性因素的影响。

Viewpoint #

From #

缓解稀缺带来的不良后果的办法

Content #

助手打断法 #

我们的一位同事,是一家基金会的理事长。他对排满各种事项的日程表再熟悉不过了:基本上每一天,他都要马不停蹄地赶赴各种会议。他很容易就会像医生或有线电视安装工人那样陷入落后状态——每一次会议都会比前一次更晚。(但因为人们都是来找他投资的,所以不得不忍耐。)事实上,他的会议从来不会拖延——会议原定的结束时间之前5分钟,他的助理就会露面宣布:“会议还剩5分钟。”会议结束的时间一到,助理会再次出现。这种比较直接的干预方式,能防止事态的进一步恶化,也能预防稀缺陷阱的出现。这种方式为许多主管人员所用,而这些主管人员都配有经验丰富且敬业的助理们为他们提供帮助。

助理去敲门,并非什么特别有创意的干预方法,但我们却能从中体会到某些深刻的意义。对某人所处的环境进行小小的改变,就能缓解稀缺所带来的不良后果。稀缺心理是原生的,若想从“内在”进行改变,难度很大。但我们若想获得更大的成效,其实并不需要对这种心理进行改变。事实上,这位基金会理事长的管窥心态一点也不比别人少。但他的技巧在于对环境进行了改变,从而对管窥心理产生了反作用。而且,这种改变的程度也比较缓和——助理没有创造出额外的余闲:会议的安排依然一场接着一场,理事长在赶赴一场场会议时,依然会抱着管窥的眼光看待事物。助理做到的,不过是采取了干预手段,阻止稀缺心理对现状造成实质性的破坏。我们可以将其视为类似于公路旁边的减速带。减速带只是公路上的一点点小变化,但却能保护司机免受走神或疲劳驾驶的危害。减速带的设置,比想方设法地让司机专心开车或是多睡点觉要容易得多。

成为“自己的贷款商” #

甲州政府为了抑制掠夺性借贷业务的发展,强制工薪日贷款商降低收费标准,比如对200美元的贷款,将收费从50美元降至25美元。(前提是贷款行业继续保持盈利和生存状态。)乙州政府创建了一个与此不同的项目。收费标准依然是50美元,但贷款商却只能收到25美元。余下的25美元以借款人的名义存入账户。只要账户总额累积到200美元(在这个例子中,就是8次贷款),此人就无须再借钱。当他需要贷款时,可以直接使用账户里的储蓄。事实上,从50美元的贷款费用中省下25美元,借款人很快就能成为“自己的贷款商”。

做好过度工作 #

一言以蔽之,你打算在之后日子好过一点时再去做的那些明智决策很有可能不会兑现,因为随着未来一天天临近,你会发现,现在也不比以前好过多少。因此,我们需要先发制人,做好过度工作。就在你专注于健身这件事情的那个时刻,抓紧机会,买张健身卡,请一位私人教练,求朋友时刻监督,尽你所能地做到最充分的准备。这样,当你的“管子”视野中装进其他事务时,健身这件事情也依然不会消失。如果你在去超市购物时能足够专注于健康,那么就要确保家中的橱柜里装满了你应该吃的健康食品,因为当你的心思不在饮食这件事情上时,就要让自己除了健康食品外别无他选。而当某样东西(一本书或一段广告)碰巧让你在那个时刻想到了年迈之后的生活,不妨抓紧时间采取行动:为工资账户设定自动转存、给律师打电话安排一次会议以及为写遗嘱做准备。否则,你总会想着过两天再去做,而到那时,你又会进入另一个“管子”视野中。

把表格填好 #

许多低收入高中毕业生都没有上大学。所以,许多慷慨的助学项目都假设其原因在于缺钱,并希望从这个角度为低收入高中毕业生提供帮助。然而,这些项目的功效远远没有得到充分的发挥,结果根本没有几个申请人。这种现象让人有些想不通,于是一群研究人员决定想办法找出其中的原因。

他们将前来因报税而求助的高中毕业生(及其家人)分为3组,将所有申请大学助学金的表格发放给他们。对于第一组,研究人员只是去观察他们的申请倾向。对于第二组,研究人员尝试着去填补其信息缺口。也许高中毕业生不了解他们有资格申请的助学金数额,于是税务工作人员将这些信息提供给了他们。对于第三组,研究人员做了点颇有意思的事情。税务工作人员不仅告诉高中毕业生们能申请到的数额,而且还替他们将表格填好。最后的结果显示,仅仅告诉人们他们有资格获得的具体利益,并不能收到明显的成效。但帮助其填好表格,却起到了巨大作用。学生们申请助学金的比例提高了,而且真正上大学的比例也增加了29%。

对于任何人来说,填写表格都是一件麻烦事,是个障碍,会给人们拖延和遗忘的机会。而对于低收入人群来说,他们的带宽已经承受了负担,而且很可能因自身的经济条件而觉得脸上无光,所以,填表就成了一个更加麻烦的障碍。来自没有大学经历家庭的高中毕业生,在得到填表帮助的情况下,大学入学率是之前的3 倍。

关于如何对稀缺进行管理,我们从中还能得到更深的体会。看起来不足挂齿的小步骤,在错误规划、拖延和遗忘的影响下,就有可能演变成巨大的障碍。而我们在规划人生或为他人制定政策时,常常会忽略这些障碍的存在。给某人发放一张表格,让他带回家填写,此人就有可能会遗忘,而如果让他当场填好,参与率就会直线上升。无疑,填表这件事情是“不足挂齿”的小步骤,但人们就是很容易在这一小步上摔跤,就像计算利率和为车子做年检一样。当我们的带宽承受负担时,最简单的障碍也会造成巨大的损失。

得寸进尺的药瓶 #

我们可以创建一款像GlowCaps智能药瓶这样的产品。这种药瓶,如果一天没有被打开正确的次数,就会产生某种反应:药瓶一开始会发光,如果还是没有被打开,就会开始发出哔哔声,最后还会给用户的手机发短信。药瓶“得寸进尺”地去烦扰它的主人,并以这种方法防止伴随管窥心态而产生的忽略行为。数据显示,自从有了GlowCaps智能药瓶后,穷人遵守医嘱的程度得到了大幅度的提高。通过对稀缺心理的了解,类似的产品和干预手段同样能解决类似的问题。GlowCaps智能药瓶的例子反映出的是:我们可以用廉价而有效的科技潜移默化地应对带宽所导致的问题,而类似的方法也能在其他领域中创造出同样富有成效的成果。

工薪日贷款 #

为了解决金钱稀缺问题,许多员工都选择了工薪日贷款。而值得注意的是,工薪日贷款不过是以已经完成的工作为抵押而借出来的钱。在某个月的中旬去借工薪日贷款的人,实际上都已经完成了一半工资所支付的工作量。之所以需要贷款,很大一部分原因就在于薪水总是在工作完成之后才发放。雇主为什么会让员工去借这种贷款,让他们因此面对落入稀缺陷阱、背负贷款负担的威胁,并由此降低生产力,而同时雇主又完全有能力以较低的成本向员工提前支付工资呢?如果雇主可以通过提供合理的金融产品和创建带宽来提高生产力,那将是一件多么有价值的事情啊!

雇主的例子告诉我们,若从带宽角度进行思考,我们就可以用不同方式来回答并解决不同问题。从遵从医嘱这个简单的例子来看,穷人更容易忘记服药。我们可以说,“现实情况就是这样”,然后放任不管,从此不再相信穷人拥有按要求做事情的能力。

Viewpoint #

From #

《稀缺》 塞德希尔·穆来纳森 2014

红花日本料理是如何管理座位资源的

Content #

青木意识到,餐饮行业真正稀缺的是座位资源。作为管理者,你能在餐厅中摆放多少座位?如果能布置更多的餐桌,就能有更多的座位。如果每张餐桌能容纳更多人,就能有更多的座位。如果能以更快的速度实现餐桌食客的周转,每天晚上每张餐桌招待4轮客人而非3轮,那么也就意味着更多的座位。

红花日本料理上演的厨艺表演,实际上是解决稀缺问题的一种非常聪明的办法。厨师的表演,需要食客们坐在公用餐桌边观赏。供8人进餐的公用餐桌,就能更加有效地容纳客人。如果4人同去用餐,就不用等待临近的两对人用餐结束。有了公用餐桌,只要让客人彼此挨着坐下就好。4人餐桌,不过是一张桌子周围摆放4把椅子。而且,红花日本料理的翻桌率也变得更高了。厨师在你面前上演的厨艺精妙绝伦,而且动作麻利。你走进餐厅找个座位坐下,厨师就会站在中间时刻待命。菜单十分简洁,点菜的时间也有限制。然后,厨师会欢快地一步步将菜肴为你烹饪好,将食物抛向你的盘中。你必须很快吃完,因为这样才能看到下一道即将抛向你盘中的菜是怎样做好的。就连甜点冰激凌也是怀着让客人快速吃完的心机而设计的,因为在红花日本料理这样的开放式烹饪环境中,冰激凌很快就会融化。烹饪表演结束时,厨师鞠躬,客人鼓掌,用餐结束。之后你还想做什么,继续坐在座位上咬筷子?厨师就站在那里,一切结束,服务员早已将桌子清理干净,其他人也都准备离开,在这种情况下,实在没有人愿意磨蹭。而这就意味着红花日本料理每晚从每张桌子上能赚到更多钱。有人估计,红花日本料理与其他餐厅相比,每1美元收入中的盈利都要多出10美分。

Viewpoint #

From #

《稀缺》 塞德希尔·穆来纳森 2014

组织里的余闲管理

Content #

余闲能降低我们进入救火陷阱的概率。而我们也知道,管窥心态会令人很容易忽略其他考虑因素。对组织而言,有一种解决办法就是,对余闲进行明确的管理,确保余闲的存在。从银行管理风险的教训中,我们能更深刻地领悟到这一点。一直以来,银行都深知抱着管窥心态看待账目底线的经理,没有办法充分地将风险因素考虑在内。2008年金融危机证实,这种认识太过保守。最近,许多银行都引入了“首席风险官”(Chief Risk Offi cers,CRO)这一职位。首席风险官与管理团队的其他成员相互独立,直接向CEO汇报工作。他们会用风险评估的眼光,去审批金融产品、带宽和其他交易。这一职能与其他银行家不同,许多银行经理人都专注于(用管窥心态看待)最具吸引力的交易,总是想赚到最多的利润,实现最大的销售目标;而首席风险官的唯一目标就是,监管风险。

组织“赘肉”一点一点地被削掉,随之一同被带走的,还有余闲。在这种情况下,组织很希望能拥有一位干将,不是整天想着如何将一分钱掰成两半花,而是能超脱于每日的管窥心态,确保组织拥有足够的余闲。他所关注的问题,不是今天需要完成什么工作,而是明天可能会出现什么样的突发事件,而这些突发事件又会如何影响紧张的工作计划。一定要有这样一个人,他的存在,能够保证专注于当下工作目标的人们,不会向未来的项目借用资源,并因此耗尽余闲,将组织拉入未来的带宽陷阱。

Viewpoint #

From #

《稀缺》 塞德希尔·穆来纳森 2014

余闲不能太多也不能太少

稀缺与充裕的紧密联系

Content #

稀缺与充裕之间的紧密联系,在许多情况下都会出现。农民之所以会在收获之前囊中羞涩,是因为他们在收获之后、现金充裕时花了太多钱。充裕时期的行为会酿成最终的稀缺:我们在现金一大把时总是不知道要去存钱;而我们在截止日期距离很远时,也总是会游手好闲。

请回顾2008年的金融危机。许多人都认为,导致这场危机的原因之一是认知盲点。从20世纪90年代到21世纪早期,房价一直在上涨。在房地产繁荣时期,人们很难想象房价可能会下跌,而且会认为根本不值得为此担忧。这种想法影响了人们的许多选择。如果房价注定不断上升(至少不下降),那么高杠杆交易就是有道理的,高住房贷款担保比率就是更安全的。但是,实际上房价必定会下跌,有时下跌幅度非常惨烈。因此,所有以房价不会下跌为假设而做出的投资决定,导致了一场雪崩般的金融崩溃,险些就拖垮了全球金融体系。在这个例子中,金融危机所导致的巨大稀缺,其根源正是之前几年充裕阶段时的松懈行为。

当然,我们也可以将上述种种都看作普遍的行为方式:人们总会浪费时间;人们总会过于自信。但金融危机之前的好时光和充裕资源,将人们的这些倾向进一步放大,促成了过分自信的心理,强化了他们的自满心理。

沿着稀缺的线索向上追溯,我们就能看到充裕:萧条,是由我们在繁荣阶段的行为所导致的;最后一刻的拼凑,是由我们之前几周的不作为所造成的。虽然说稀缺在许多重要问题中都扮演了主角,但充裕却是其根基。

Viewpoint #

From #

《稀缺》 塞德希尔·穆来纳森 2014