二叉树

12:10 pm in 常见算法, 算法与数据结构 by ray_linn

原文 原作者: Nick Parlante
本文的主旨是介绍二叉树的基本概念,并通过 /C++ 和 Java 的方案来解决一系列的实际问题。二叉树具有一个很优雅的递归指针结构,所以也是个学习递归指针算法的好办法。

二叉树简介
二进制树是由节点组成的,其中每个节点包含一个“左”指针,一个“右”指针和一个数据元素。”根”指针所指向的树的最顶层节点。左、 右的指针以递归方式指向两边较小的”子树”。空指针则表示二叉树不带任何元素 — — 空的树。正规的递归的定义如下:一个既不是空的(用空指针表示)也不是由单一节点组成的二叉树,其左右节点(recursive definition ahead) 各指向一个二叉树。

二叉树

图1-1 二叉树

“二叉搜索树”(BST) 或”有序二叉树”是一种节点按顺序排列的二进制树:对于每一个节点,其左子树中的所有元素都是小于等于该节点 (< =),和其右子树的所有元素均大于该节点 (>)。满足上面条件的树是二叉搜索树–例如 “根”节点是 5,和其左子树节点 (1、 3、 4) 是小于等于 5,和其右子树节点(6 9) 均大于 5。递归的,每个子树都必须遵循二进制搜索树约束: 在 (1、 3、 4) 子树,3 是根节点,而且 1 < = 3 和 4 > 3。请注意:描述问题要特别注意措词 — “二叉搜索树”和”二叉树”是不同的。

树的底端的节点的子树为空,因此被称为“叶”节点(1,4,6)而其他的节点则成为“内部”节点(3,5,9)。

>>> 阅读全文

Hadoop 技术手册(二) 用 Map/Reduce 进行大数据分析

5:22 pm in 行业方案, 解决方案 by ray_linn

现在是数据的时代。Google 在 2001 年发布图像搜索功能时,只有 2.5 亿索引图像,不到 10 年,这个巨大的搜索功能已经可以检索超过 100 亿个图像了,每分钟有 35 小时的内容被上传到 YouTube。而 Twitter 每天平均需要处理 5500 万 tweet。数据的增加,很快就超过单一计算机的处理能力。基于集群的分布式并行编程能够让软件与数据同时运行在连成一个网络的许多台计算机上。这样的分布式并行环境的最大优点是可以很容易的通过增加计算机来扩充新的计算结点,并由此获得不可思议的海量计算能力, 同时又具有相当强的容错能力,一批计算结点失效也不会影响计算的正常进行以及结果的正确性。

Google 就是这么做的,他们使用了叫做 的并行编程模型进行分布式并行编程,运行在叫做 GFS ( Google File System )的分布式文件系统上,为全球亿万用户提供搜索服务。 最先受到了MapReduce 和 Google File System(GFS) 的启发,2005 年秋天开始, 作为 Lucene 的子项目 Nutch 的一部分正式引入。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 的项目中。

Hadoop 实现了 Google 的 编程模型,提供了简单易用的编程接口,也提供了它自己的分布式文件系统 ,与 Google 不同的是,Hadoop 是开源的,任何人都可以使用这个框架来进行并行编程。如果说分布式并行编程的难度足以让普通程序员望而生畏的话,开源的 Hadoop 的出现极大的降低了它的门槛,读完本文,你会发现基于 Hadoop 编程非常简单,无须任何并行开发经验,你也可以轻松的开发出分布式的并行程序,并让其令人难以置信地同时运行在数百台机器上,然后在短时间内完成海量数据的计算。你可能会觉得你不可能会拥有数百台机器来运行你的并行程序,而事实上,随着”云计算”的普及,任何人都可以轻松获得这样的海量计算能力。 例如现在 Amazon 公司的云计算平台 Amazon EC2 已经提供了这种按需计算的租用服务,有兴趣的读者可以去了解一下,这篇系列文章的第三部分将有所介绍。

大数据的需要导致的革命技术之一是 MapReduce,一个编程模式,这是 Google 针对大规模、分布式数据而开发的。

在本文中,我将介绍 Apache 的开源 MapReduce 实现,Hadoop,也有人将其称之为云计算的杀手应用程序。
Purpose

>>> 阅读全文

HadoopDB 快速上手 (二) 配置MySQL

2:01 pm in 行业方案, 解决方案 by ray_linn

在上一篇文章中,我们介绍了如何配置 在一起工作。在这篇文章中,我们要详细介绍如何配置 系统使用 作为单节点数据库。为此,我首先还是会介绍如何配置 ,如果你之前没有读过相关的文档,我强烈建议
HadoopDB is an interesting project going on at Yale under the Prof. Daniel Abadi’s supervision that I’ve been meaning to play with for some time now. I initially read the paper describing HadoopDB last year and intended to document how to setup a HadoopDB system using but I got busy with school work and never got around to it. Since I have a little more free time now that I’ve finished my thesis, I figured it was about time I got down to playing around with HadoopDB and describing how to setup a HadoopDB system using the single node database. With that, I’m going to describe how to get up and running with HadoopDB. If you have not read the paper before starting, I strongly encourage you to give it a read. Its very well written and not that difficult to get through.
In this guide, I’m installing on Server 10.04 64-bit. Thus, I will be using the package manager heavily. I have not tested on other platforms but a lot of what is described here should apply to other platforms such CentOS.
This guide is only on how to set up a single node system. It would not be difficult to extend what is contained here for setting up a multi-node system which I may write about in the future.

安装
安装 之前,首先需要安装 Java。你可以从 Oracle 的站点下载 Sun JDK,也可以和我一样,使用 OpenJDK 也没有任何问题,在 上你可以这样安装 OpenJDK:

sudo apt-get install openjdk-6-jdk

在开始安装 Hadoop 之前,我推荐你阅读 Michael Noll 的
Before getting into the installation of Hadoop, I encourage you to read Michael Noll’s in-depth guide to installing Hadoop on Ubuntu. I borrow from his articles a lot here.
First, create a user account and group that Hadoop will run as: sudo groupadd hadoop

sudo groupadd hadoop
sudo useradd -m -g hadoop -d /home/hadoop -s /bin/bash - "Hadoop software owner" hadoop

Next, we download Hadoop and create directories for storing the software and . For this article, Hadoop 0.20.2 was used:

cd /opt
sudo wget http://www.gtlib.gatech.edu/pub/apache/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
sudo tar zxvf hadoop-0.20.2.tar.gz
sudo ln -s /opt/hadoop-0.20.2 /opt/hadoop
sudo chown -R hadoop:hadoop /opt/hadoop /opt/hadoop-0.20.2
sudo mkdir -p /opt/hadoop-/tmp-base
sudo chown -R hadoop:hadoop /opt/hadoop-data/

Alternatively, Cloudera has created Deb packages that can be used if you wish. I have not used them before so can’t comment on how they work.
Next, we need to configure SSH for the hadoop user. This is required by Hadoop in order to manage any nodes.

>>> 阅读全文

HadoopDB 快速上手指南

1:31 pm in 行业方案, 解决方案 by ray_linn

是由美国耶鲁大学计算机科学教授 Daniel J. Abadi 及其团队推出开源并行数据库。该数据库集合关系型数据库的数据处理能力与 等技术于一身,采用了许多不同的开源组件,包括开源数据库、、Apache 技术和 等等。

的查询是利用 或常规的 语言完成的。MapReduce 适用于大规模数据集(大于1TB)的并行计算。另一方面, 的数据处理部分是利用Hadoop 完成的。Abadi表示,其中部分是利用了分布在无分享计算机群集中的许多节点上的不同 实例完成的。实质上,HadoopDB是MapReduce和并行数据库管理系统技术的混血儿。不过和 Aster 、Greenplum或Hive等已经开发出的项目和厂商不同,HadoopDB不是简单地在语言/接口层面上的混合,它是更深的系统实现层面上的集成。

因为集两种技术的精华于一身,HadoopDB 可以取得 MapReduce 等大规模并行数据基础设施的容错性。在这些基础设施中,服务器故障对整个网络的影响非常小。HadoopDB可以执行复杂的分析,速度几乎与已有的商用并行数据库一样快。

本文的目的是为运行HadoopDB给出一些指导。整个 HadoopDB 的设计概述可以在VLDB 论文的第五节找到。在该论文中,你还可以找到我们测试 (带 )、HadoopDB 和商用并行数据库的测试结果比较。

HadoopDB 的基本原理是利用 Hadoop 来存取部署在集群上多个单一节点上的 服务器(比如:PostgreSQL 或 )。通过发起 查询,HadoopDB 将尽可能多的数据处理推给数据库引擎来进行(通常情况下,大部分的映射/组合 – Map/Combine 阶段的逻辑可以用 来表达)。这样就创建了一个类似于无共享并行数据库的系统。应用从数据库世界得到的技术大大提升了性能,特别是在更复杂的数据分析上。同时,HadoopDB 依赖于 MapReduce 框架的事情确保了系统在高可扩展性和容错、异构性(heterogeneity)方面的效果与 Hadoop 类似。详细内容请再次参考 VLDB 论文。

>>> 阅读全文

Hadoop 技术手册(一) Hadoop 生态系统

4:11 pm in 行业方案, 解决方案 by ray_linn

文章评价:1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

现在是数据的年代。近 10 年来,随着 Web 不断发展状态,数据的大小也在飞速增长,而且丝毫没有慢下来的迹象。统计数据表明,每过去的一年中所生成的数据要大大超过历年的数据的总和。摩尔定律不单对计算机硬件生效,现在对于不断生成的数据也同样有效。面对如此海量的数据,业界用了一个简单明了的词来称呼它: Big

和用行和列来存储结构化信息的方式不同, Big 面对的是复杂的,非结构化的存储格式,包括网站、社会性媒体、电子邮件 甚至是视频、演示文稿等等。这是个非常重要的区别,为此,要从 Big 中提取有价值的商业信息,都必须依靠某些技术来对这些格式进行可扩展的、精确且有效分析。

紧接着下一个问题就出现了 – 我们如何有效地处理这些 Big Data?在这一领域的开拓者之一是谷歌 Google,它设计了类似 和 Google文件系统等可扩展的框架。受到这些设计的启发,Apache 倡导了一个名为 的开源项目。Apache 是一个开源框架,可以对大型数据集的进行跨集群的分布式处理。

生态系统 (Ecosystem)
Apache Hadoop 的核心由 2 个子项目组成 – Hadoop 和 Hadoop 分布式文件系统。 Hadoop 是编程模型,也是一个软件框架,可以编写在集群上进行并行处理大量数据的应用。 是 Hadoop 应用所使用的主要存储系统。 创建了数据块的多个副本,并将其分发整个集群的计算节点上以便能可靠、且快速的进行计算。其它和 Hadoop 相关的 Apache 项目还包括: , , , , 等等。

下图列出了 Hadoop 的一些组件,接下来我们会逐一介绍 Hadoop 生态系统的这些关键组件。

>>> 阅读全文

多租户技术与 Hibernate 4.0 (一)

10:40 am in 行业方案, 解决方案 by ray_linn

在多租户技术中,租户()是指使用系统或电脑运算资源的客户,其所使用的是供应商所开发或配置的应用系统或运算资源等。供应商所设计的应用系统会容纳数个以上的用户在同一个环境下使用,为此应用程序与运算环境必须要特别设计,除了可以让系统平台可以允许同时让多份相同的应用程序同时执行外,保护租户数据的隐私与安全也是多租户技术的关键之一。

多租户是决定 效率的关键因素。多租户技术在实际业务上运用的成功且广为人知的案例之一,是由 Salesforce.com 所创建的 CRM 应用系统。在这样一个典型的企业 环境中,用户是指某个特定组织的员工组成的多个组,这个组织就是所谓的租户。

在未出现 之前,组织会购买一个软件应用程序供自己的成员使用;组织的员工就是应用程序的用户,而该组织就是所有者。在 和云的世界中,许多组织都将使用同一个应用程序,组织是租户,而非所有者,但是组织的员工仍然是用户的身份。每名用户都具体关联到一个特定租户(组织),而 为每个租户分别提供一份应用程序的副本,以供他们的用户使用,同时只允许每个组织自己的成员访问其组织的数据。

可见,多租户技术有下列特色:

  • 1. 由于多个租户共用一个应用程式或运算环境,其相关的硬件成本,操作系统与相关软件的授权成本都可由多个租户一起分担,对供应商来说可以有效降低成本。
  • 2. 通过不同的数据源管理手段,多租户技术的数据可以用不同的方式进行数据隔离,而良好的数据隔离方法可以降低供应商的维护成本(包含设备与人力),而供应商可以在合理的授权范围内取用这些数据分析,以作为改善服务的依据。
  • 3. 多租户架构下所有使用者都共用相同的软件环境,因此在软件版本变动时可以只发布一次,就能在所有租户的环境上生效。
  • 4. 具多租户架构的应用软件虽可定制化,但定制化难度较高,通常需要平台层与工具的支持,才可降低定制化的复杂度。

传统 Web 应用和 SaaS 应用的区别
传统 web 应用程序和支持云的 SaaS 应用程序的主要区别,在于两个容量利用特性:

>>> 阅读全文

EFI 编程简介

5:31 pm in UEFI, 行业方案 by ray_linn

背景
可扩展固件接口( EFI—Extensible Interface)最早可追溯到 1998年的 Boot Initiative(IBI) 项目。现在 EFI 规范主要由一些公司财团来开发和维护(包括 和 Microsoft),定义了为系统固件导出的一系列 API 和数据结构,可以被下列客户端所使用

  • • 操作系统加载器(loader)
  • • 操作系统
  • • EFI 设备驱动
  • • EFI 诊断和系统工具
  • • EFI 命令解释器 (shells)

有关 EFI 及其起源的细节,你可以紧跟开放固件(Open )的讨论,在 More Power to 一节中找到。此外,在 《Mac OS 内部》一书中有一整章专门研讨开放固件和 EFI。

EFI 被引入之后并没有马上得到普及。部分原因要归咎于安腾(Itanium)CPU 乏善可陈。此外,EFI 是一种颠覆性的解决方案,因此在短期内缺乏吸引力。苹果为其基于 的 Macintosh 电脑采用了 EFI ,对 EFI 来说如同一剂强心剂。尤其是,尝试在 CPU 的苹果机上运行非苹果操作系统(主要是 )的狂热,使得人们对 EFI 产生了相当大的兴趣,对应的,是对 EFI 编程的兴趣。

多年来,Intel 已经发布了许多 EFI 相关的软件,包括源代码。Intel 平台的 EFI 创新框架(Intel® Platform Innovation Framework,简称框架)是 Intel 下一代固件架构。这段代码的核心块基于开源许可证,可以在 TianoCore.org 找到。 “Tiano” 是开发代号,而“Framework”是市场名称。 该框架是英特尔的 EFI 规范的实现。

标准 EFI 开发环境
要开始进行 UEFI 开发,你需要用到两个开发包: EFI 开发工具 ( ) 和 EFI 工具集 (EFI Toolkit) 。

>>> 阅读全文

Windows事件追踪入门与使用方式

10:47 pm in 调优, 调优与调试 by ray_linn

虽然大多数Windows开发者都知道Windows事件追踪(Event Tracing for )是一个日志记录和事件追踪工具,但是许多管理员却从没听说过它,只是简单地认为ETW不过是操作系统提供的事件日志记录与追踪功能的一部分。ETW在内核中运行,可以追踪用户模式应用程序、操作系统内核和内核模式设备驱动引发的事件。

一些操作系统核心组件和第三方应用程序使用Windows事件追踪来提供事件日志记录和追踪。虽然在Windows2000中第一次发布时,Windows事件追踪只有在Windows检查版本中才能使用,但现在它已经是所有Windows版本的内置工具。

Windows事件追踪()入门

在Windows服务器故障诊断和排错方面,一直就没有多少信息可以参考。管理员总是竭尽所能四处寻找各种可能的信息来确定故障。所以就有了诸如进程监视器、进程资源管理器、性能监视器(PerfMon)和性能分析日志(PAL)等多种工具来帮助我们获取远多于事件日志的信息,但不幸的是,有时候我们还需要更多的信息。

ETW无需额外的设备就可以收集足够的信息,而且有诸多优点。例如:

>>> 阅读全文

超越 Web 2.0

7:21 pm in 行业方案, 解决方案 by ray_linn

正当大多数组织正努力通过 产品来实现 E2.0 的时候, 有些企业已经放长眼光,并在询问 “下一步该做什么?”。如果 是关于沟通(communication), 是关于协作(collaboration),我们现在应该做些什么准备,以应对用户及市场的未来需求,并在竞争中抢得先手?

要为未来做准备,我们需要了解网络的演变,正如 Gary Hayes表明的那样,网络正朝着一个更加身临其境的环境(more immersive environment)演变。

Web1.0 到 Web3.0 的演变

图1-1 的演变

事实上,这意味着:

  • • Web 1.0 – 单向 + “推”。如传统的“在线小册子 brochureware” 风格网站
  • • Web 2.0 – 交互式 – “推” + “拉”。诸如 MySpace、 Wikipedia 和 Facebook 之类的社会计算网站
  • • Web 3.0 – 浸入式 (immersive) 例如: 3维虚拟世界和无所不在的计算
  • • Web 4.0, 5.0 … 使用智能代理和自适应信息的语义世界(the semantic world)

Web 最早的概念包括常更新的静态 HTML 页面。而.com 时代的成功则是依靠一个更加动态的 Web(“Web 1.5”),其中CMS(内容管理系统)可以从不断变化的内容数据库中即时生成动态HTML页面。早期的网络营销不外乎是透过电子邮件发送、弹出式窗口、横幅式广告等几种手法。 最常见的例子就是入口网站将其网页上的广告空间待价而沽,等到广告商上门之后,入口网站再依点选率或是摆放时间的长短来收取费用。

>>> 阅读全文

.NET 4.5 并行之新特性

4:39 pm in dotNet, 编程语言 by ray_linn

原文

随着 4 和 2010 的发布,微软为并行提供相当广泛的支持,包括: 任务并行库 ()、 并行 LINQ ()、 新的同步和协调原语集合 (如 ConcurrentDictionary),为处理并行工作负荷而改进的线程池、 新的调试器窗口、 新的并发可视化工具,等等。自那时起,微软一直致力于埋头开发新的 4.5 和 11。这是对 11 开发者预览的一瞥。

更好的性能

任务并行库

More and more, is becoming the foundation for all parallelism, concurrency, and asynchrony in the Framework. That means it needs to be fast… really fast. Performance in 4 is already good, but a lot of effort was spent in this release improving the performance of TPL, such that just by upgrading to 4, important workloads will just get faster, with no code changes or even recompilation required. just one example, consider a long chain of tasks, with one task continuing off another. We want to time how long it takes to set up this chain:

>>> 阅读全文

XPerf — Windows Performance Toolkit 使用简介

10:19 am in 调优, 调优与调试 by ray_linn

文章评价:1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

2000 开始, 中就带了事件跟踪机制。所谓事件跟踪,是一种从各种系统组件触发事件的基础设施,只为少量的内核模式下的实体所使用。在 中, 文件 (与 提供程序的元数据类似)被用来描述事件。在 Server 2008 中,事件用 装配清单来描述事件,这个设计使得 的使用更为普遍,成百上千的新的事件提供程序( Event Proivder ) 被添加到系统中。

这些提供程序会产生什么信息呢?首先, Windows事件日志( Event Log) 使用这些 提供程序生成的一部分信息(但不是全部)。因此可以获得有关系统事件的各种诊断消息。另一个提供程序是性能监视器(Performance Monitor), 特点是能够查询成组的 事件。将这些不同源的信息组织在一起并不是件容易的事。尤其利用同样的跟踪,在对系统的整体的分析和对某些特定应用的分析中不断切换的时候。

这种整合的需求最终导致了 Windows 性能工具包(Windows Performance Toolkit, ) 的诞生,它致力于数据收集和集成,是正确地解释和利用 ETW 输出不可缺少的工具。特别的是,它能用一致的方式查看大量的信息,让你能够对系统内正发生的事情有一个整体印象。另外,通过利用内核采样中断,你可以使用全局的采样事件探查器 (包括调用堆栈分析)。更棒的是,它是完全免费的。

下面让我们来看看 的功能。从 Windows 7 开始, 被包括在 Windows SDK 中,你需要下载 Windows SDK 并安装它。

>>> 阅读全文

GPUView 的使用

11:32 am in 调优, 调优与调试 by ray_linn

文章评价:1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

原文
是我(原文作者: Matt )和 Steve Pronovost 在微软实习的时候开发的一个工具。用于检查您的电脑上的图形应用程序、 图形内核、 图形驱动程序、 视频卡和 CPU 内核之间性能交互。与标准的分析工具 IceCap 或 Vtune 不同,它提供了别具一格的视角。它密切关注 CPU 和 之间的相互交互,以确定你的应用程序是受限于 CPU 还是 或者二者,以及哪些部分需要重新调整以提高资源利用率。它可以帮助解答下面问题:

  • × 为什么垂直同步刷新率不高?
  • × 在 渲染新的图形表面是否占住了 导致帧丢失?
  • × 是应该优化 CPU 代码来改善性能,还是应该降低 GPU 负担?
  • × 在显示帧之间 GPU 是否已经早早收到图形任务,还是 GPU 一直空闲在那里等待 CPU 代码?

在本文的第一部分我们会关注如何使用并了解 ,在文章的第二部分我们会看一些实际的例子,学习用 来查看某些实际游戏的性能问题。

GPUView 是 7 SDK 的一部分。下载并安装好 SDK 之后,你可以到“ :\\Program Files\\Microsoft SDKs\\\\v7.0\\bin” 目录下执行 _x64.msi 或者 _.msi 来安装带有 GPUView 的 Windows Performance Toolkit。

要使用 GPUView,你需要用管理员权限打开命令行,然后运行 Log.cmd 来启动事件日志。再次运行 Log.cmd 就会停止日志记录。Log.cmd 会生成 Windows 的几个事件跟踪 (*.etl) 文件;这些不同事件流会被合并到单个文件中,即 Merged.etl,GPUView 会读取该文件。下面是一些示例事件:

  • × 所有 CPU 上下文切换,包括堆栈跟踪和切换的原因
  • × 所有进入和退出内核模式及堆栈跟踪
  • × 所有 DirectX 图形内核记录的 GPU 事件,包括所有的命令缓冲提交和有关资源创建、销毁、锁定和绑定事件
  • × 图形驱动报告的时间,比如命令缓冲区开始和结束的时间,每个显卡的垂直同步间隔
  • × 其它可能会影响性能的系统事件,比如 page faults

你也可以用 来读取 ETL 文件,但是它如何无法理解任何与 GPU 相关的事件。因为这些记录文件可能相当的大(比如魔兽世界每3秒钟大概会生成 3GB 的文件),我经常使用”log m”命令,该命令会忽略许多出现频率很高的事件。

>>> 阅读全文

阅读 Grub 源代码 (二) 80386 寄存器和保护模式

2:52 pm in Linux和Unix, 平台开发 by ray_linn

寄存器
80386处理器是 公司80X86发展史上的里程碑,80386处理器中的保护模式,虚拟 8086 模式以及地址的段页管理机制,虚拟内存这些都是后续各种处理器的核心。所以说80386 是后续发展处理器的基础.

1.80386 的的寄存器:
80386的寄存器可以分为8组:通用寄存器,段寄存器,指令指针寄存器,标志寄存器,系统地址寄存器,控制寄存器,调试寄存器,测试寄存器,它们的宽度都是32位的。
A1.General Register(通用寄存器)
EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP,它们的低16位就是8086的AX,BX,CX,DX,SI,DI,SP,BP,它们的含义如下:

EAX:累加器
    EBX:基址寄存器
    ECX:计数器
    EDX:数据寄存器
    ESI:源地址指针寄存器
    EDI:目的地址指针寄存器
    EBP:基址指针寄存器
    ESP:堆栈指针寄存器

这些寄存器可以将低16位单独存取,也就是 8086 的AX,BX,CX,DX,SI,DI,SP,BP,在存取这些寄存器的低16位(AX,BX,CX,DX,SI,DI,SP,BP)时,它们的高16位不受影响,同时和8086 一样对于AX,BX,CX,DX这四个寄存器来讲,可以单独存取它们的高8位和低8位(AH,AL,BH,BL,CH,CL,DH,DL)

A2:Segment Register(段寄存器)

除了8086 的4个段外(CS,DS,ES,SS),80386还增加了两个段FS,GS,这些段寄存器都是16位的,它们的含义如下:

>>> 阅读全文

阅读 Grub 源代码 (一) X86 汇编及 GAS 语法

6:06 pm in GCC工具链, 编程语言 by ray_linn

文章评价:1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

简介
本文的例子采用 AT&T 汇编语法编写,并用 编译的。该语法的主要优点是它与 内嵌汇编保持着语法兼容性。不过,这并不是表示 操作符唯一语法。例如,NASM、MASM 就使用了完全不同的语法来表示助记符,操作数和寻址模式及其他高级汇编特性。 AT&T 的语法是类 Unix 系统上的标准,但其他使用 语法的汇编器,比如 本身,两种语法都可以接受。

项目的一部分,它具有可以自由使用、适用于多种操作系统、和 GNC 编译器 () 和 GNU 链接器 () 等编程工具接口良好等等特点。

如果使用安装了 操作系统的电脑,通常默认就安装了 GAS。如果使用的是 操作系统,则可以安装 或者 来获得 GAS 和其他编程工具。

GAS 指令一般都采用“ 助记符 源,目的地 ”的格式。例如,下面的 mov 指令:

>>> 阅读全文

WebGL 教程(三)动起来!

1:23 pm in Web APP, Web开发 by ray_linn

欢迎来到Lesson 3!在这一课中我们将开始尝试让物体运动起来。本节课的内容是基于 NeHe 的 教程的第四课改写的。

Here’s what the lesson looks like when run on a browser that supports :

Click here and you’ll see the live version, if you’ve got a browser that supports it; here’s how to get one if you don’t.

More on how it all works below…

The usual warning: these lessons are targeted at people with a reasonable amount of programming knowledge, but no real experience in 3D graphics; the aim is to get you up and running, with a good understanding of what’s going on in the code, so that you can start producing your own 3D Web pages quickly possible. If you haven’t read the first and second tutorials already, you should probably do so before reading this one — here I will only explain the differences between the code for lesson 2 and the new code.

>>> 阅读全文

Copy Protected by Tech Tips's CopyProtect Wordpress Blogs.