`
文章列表
处理器本身能理解的机器指令是0和1的序列,让人来写就要大费周章了,因此人们一直在努力开发各种系统,用人类易于理解的形式来编写程序。本节仅简单介绍一下指示处理器工作的机器语言程序的编写方法。 用汇编语言编 ...
在x86/x64体系里,由于x87 FPU硬件使用扩展双精度格式,因此必然会遇到single/double precision格式与double extended-precision格式之间的互换问题。 转换为扩展双精度数   当由单精度数或双精度转换为扩展双精度数时,exponent部分必须基于扩展双精度数的biased码来调整。于是扩展双精度数的exponent值为: ① 从单精度转化:exponent – 127 + 16383。 ② 从双精度转化:
我们知道在计算机中处理的数是按照一定的规则进行组织和存放的。其中的每个数按特定的编码规则组织。可是光有这些数的组织规则还是不够,计算机每条指令的操作数可能会有不同的数据类型。那么计算机能处理哪些数据类型呢?在这一章里,我们将要了解数与数据类型。 数 计算机能处理各种各样的信息,计算机硬件对数据进行处理后,可呈现出各种各样的信息。 数字 数字是个基本的计数符号。通用的数字有10个:0,1,2,3,4,5,6,7,8,9。以这些数字组合构成的数是十进制数。 思考各个进制数的数字。 1.二进制数字 包括0和1。 2.八进制数字 包括0,
选择编译器 nasm?fasm?yasm?还是masm、gas或其他? 前面三个是免费开源的汇编编译器,总体上来讲都使用Intel的语法。yasm是在nasm的基础上开发的,与nasm同宗。由于使用了相同的语法,因此nasm的代码可以直接用yasm来编译。 yasm虽然更新较慢,但对nasm一些不合理的地方进行了改良。从这个角度来看,yasm比nasm更优秀些,而nasm更新快,能支持更新的指令集。在Windows平台上,fasm是另一个不错的选择,平台支持比较好,可以直接用来开发Windows上的程序,语法也比较独特。在对Windows程序结构的支持上,fasm是3个免费的编 ...
《支撑处理器的技术——永无止境地追求速度的世界》 ( 为程序员打开处理器黑盒,深入理解构造与原理。) (美)海撒安藤著; 李剑译 ISBN 978-7-121-18092-7 2012年10月出版
x86/x64体系探索及编程 ( 对x86处理器介绍得最详尽又最具实践指导意义的一本书) 邓志著 ISBN 978-7-121-18176-4 2012年10月出版 定价:119.00
现在,我们将用Objective-C定义一个实际的类,并学习如何使用类的实例。 同样,我们将先学习过程。因此,实际的程序范例可能不是特别实用,那些更加实际的内容将在稍后讨论。 假设要编写一个用于处理分数的程序,可能需要处理加、减、乘、除等运算。如果你还不知道什么是类,那么可以从一个简单的程序开始,代码如下: 代码清单3-1 // 采用分数的简单程序   #import <Foundation/Foundation.h>  
你已经遇到过Objective-C的基本数据类型int。回顾一下,声明为int类型的变量只能用于保存整型值,也就是不包含小数位数的值。 Objective-C还提供了另外3种基本数据类型:float、double和char。声明为float类型的变量可以存储浮点数(即包含小数位数的值)。double类型和float类型一样,通常,前者表示的范围大约是后者的两倍。char数据类型可存储单个字符,例如字母a、数字字符
    你已经看到处理分数的方法如何通过名称直接访问两个实例变量numerator和denominator。事实上,实例方法总是可以直接访问它的实例变量的。然而,类方法则不能,因为它只处理本身,并不处理任何类实例(仔细想想)。但是,如果要从其他位置访问实例变量,例如,从main函数内部来访问,该如何实现?在这种情况下,不能直接访问这些实例变量,因为它们是隐藏的。将实例变量隐藏起来的这种做法实际上涉及一个关键概念——“数据封装”。它使得编写定义的人在不必担心程序员(即类的使用者)是否破坏类的内部细节的情况下,扩展和修改其定义。数据封装提供了程序员和其他开发者之间的良好隔离层。        通过 ...
在Objective-C中,事实上与所有的程序设计语言一样,在两个数相加时使用加号(+),在两个数相减时使用减号(-),在两个数相乘时使用乘号(*),在两个数相除时使用除号(/)。这些运算符称为二元算术运算符,因为它们运算两个值或项。 运算符的优先级 你已经看到如何在Objective-C中执行简单的运算,例如,加法。下面的程序进一步说明了减法、乘法和除法运算。在程序中执行的最后两个运算引入了一个概念,即一个运算符比另一个运算符有更高的优先级。事实上,Objective-C中的每一个运算符都有与之相关的优先级。 优先级用于确定包含多个运算符的表达式如何求值:优先级较高的运算符首先求值。 ...
Objective-C 程序设计(第4版) (全球最畅销Objective-C编程书籍) [美]Stephen G. Kochan(斯蒂芬·G·科昌)著 林冀  范俊 朱奕欣译 ISBN 978-7-121-18091-0 2012年9月出版
条件表达式 Scala的if/else语法结构和Java或C++一样。不过,在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值。例如: if (x > 0) 1 else -1 上述表达式的值是1或−1,具体是哪一个取决于x的值。你可以将if/else表达式的值赋值给变量: val s = if (x > 0) 1 else -1 这与如下语句的效果一样: if (x > 0) s = 1 else s = -1 不过,第一种写法更好,因为它可以用来初始化一个val。而在第二种写法当中,s必须是var。 (之前已经提过,Sc ...
前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了SurfaceFlinger服务。有了这些预备知识之后,我们就可以从正面来分析SurfaceFlinger服务的实现原理了。SurfaceFlinger服务负责管理系统的帧缓冲区设备,并且负责渲染系统的UI,即各个应用程序的UI。在本文中,我们就简要介绍SurfaceFlinger服务,并且制定学习计划。         在前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划一系列的文章中提到,SurfaceFlinger服务运行在System进程中,用来统一管理系统的帧缓 ...
SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件容易的事。既然不能从正面分析,我们就想办法从侧面分析。说到底,无论SurfaceFlinger服务有多复杂,它都是为Android应用程序服务 ...
       在Android系统中,Content Provider作为应用程序四大组件之一,它起到在应用程序之间共享数据的作用,同时,它还是标准的数据访问接口。前面的一系列文章已经分析过Android应用程序的其它三大组件(Activity、Service和Broadcast Receiver)了,本文将简要介绍Content Provider组件在Android应用程序设计中的地位,为进一步学习打好基础。         我们知道,在Android系统上,每一个应用程序都有一个独立的用户ID。为什么要给每一个应用程序分配一个独立的用户ID呢?这是为了保护各个应用程序的数据不被其它应用程序 ...
Global site tag (gtag.js) - Google Analytics