- <?php
- $a = 222;
- var_dump($a);
- $b = &$a;
- $c = &$b;
- $arr = array(&$a);
- var_dump($a);
- var_dump($b);
- var_dump($c);
- var_dump($arr);
- exit;
# php a.php
int(222)
int(222)
int(222)
int(222)
array(1) {
[0]=>
&int(222)
}
-----------------------
因为数组里面的那个元素是引用方式的,所以,var_dump出来的结果含有 ”&“ ;但是 $a $b $c 之间都是引用关系,为什么没有显示 ”&“ ; 尤其是使用gdb查看的时候,发现 $a $b $c 并没有指向相同的地址,而且 is_ref__gc = 0 ;
是何缘故呢?
有时间再看。。。
概述
OS/2是由微软和IBM公司共同创造,后来由IBM单独开发的一套操作系统。OS/2是"Operating System/2"的缩写,是因为该系统作为IBM第二代个人电脑PS/2系统产品线的理想操作系统引入的。
历史
在DOS于PC上的巨大成功后,以及GUI图形化界面的潮流影响下,IBM和Microsoft共同研制和推出了OS/2这一当时先进的个人电脑上 的新一代操作系统。最初它主要是由Microsoft开发的,由于在很多方面的差别,微软最终放弃了OS/2而转向开发Windows“视窗”系统。
OS/2则由IBM独自开发,在发行了若干个版本后, 最大规模的发行版本是于1994年发行的OS/2 Warp 3.0,是取名自星舰迷航记电影中的曲速引擎(Warp drive),来代表其稳定快速的特色。这个版本是第一个运行于X86体系的PC之上的32位 操作系统,早于微软的Windows 95上市。Warp改进了按照界面和加强了对外设的驱动支持,还随系统包含了一组名为“Bonus Pak”,里面有12种应用程序,如文字处理和传真软件等等。
随后的升级版本是OS/2 Warp 3 Connect——一个加强了网络支持的版本。而代号Merlin的OS/2 Warp 4版,是最后一个公开发行的OS/2版本。在与Windows的竞争中,OS/2最终失败了。随后IBM也发行了若干个版本的升级,但仅仅是小范围的使用。
OS/2的新希望是在1999年由Serenity Systems International公司取得IBM的OEM合约,重新打造出eComStation 1.0,并广受好评,许多旧的OS/2系统纷纷升级到eComStation。而目前最新的版本是eComStation 2.0,也已在测试阶段。新版的eComStation支持AMD 64位CPU及可开机的JFS档案系统。
2005年12月23日,IBM宣布 、不再销售和支持OS/2系统。 OS/2的支持者要求IBM将OS/2的原始码开放,但是遭到IBM拒绝。2007年11月,OS/2的支持者再次要求开放源码,但是IBM仍然拒绝[1]。另外则有Voyager和 osFree试图以OS/2的架构重制一套新式的桌面环境。
OS/2官方网站: http://www-01.ibm.com/software/os/warp-withdrawal/
-------------------------
了解os/2后的最大的感受就是: 以后看到os2相关的代码不要看就是了,不是什么新东西
helloworld.as:
- .data # 数据段声明
- msg : .string "Hello, world!\n" # 要输出的字符串
- len = . - msg # 字串长度
- .text # 代码段声明
- .global _start # 指定入口函数
- _start: # 在屏幕上显示一个字符串
- movl $len, %edx # 参数三:字符串长度
- movl $msg, %ecx # 参数二:要显示的字符串
- movl $1, %ebx # 参数一:文件描述符(stdout)
- movl $4, %eax # 系统调用号(sys_write)
- int $0x80 # 调用内核功能
- # 退出程序
- movl $0,%ebx # 参数一:退出代码
- movl $1,%eax # 系统调用号(sys_exit)
- int $0x80 # 调用内核功能
# ld -o helloworld helloworld.o
# ./helloworld
Hello, world!
其中:
as ld 都是gcc套件中的程序
常用的汇编开发环境:
masm : 微软开发的 ml.exe , 在visualstudio中都包含了
nasm : http://www.nasm.us/
masm32 : http://www.masm32.com/
参考资料:
强力推荐:http://www.ibm.com/developerworks/cn/linux/l-assembly/
http://www.masm32.com/
http://www.nasm.us/
一、相同点
二者都是DOS下的可执行文件。.COM文件是可执行的二进制代码文件,.EXE文件是可执行的浮动代码文件。
二、不同点
(1).COM文件一般比较小,其大小不能超过64KB,而.EXE文件一般比较大,可以超过64KB。
(2).COM文件装入内存较快,而.EXE文件较慢。
(3).COM文件一般比较简单,.EXE文件则比较复杂,编写的难度较大。
(4).COM文件在执行时段寄存器含有相同的值,即代码、数据等混合在一起,而.EXE文件在执行时段寄存器含有不同的值,即代码、数据等驻留在不同的段中。
(5)驻留在磁盘上的.COM文件既无文件头也没有任何其它的内部标识信息,而驻留在磁盘上的.EXE文件有一个文件头(也称作控制信息块)、一个重定位图以及DOS使用的其它信息。
xxxx(6)对.COM文件来说,DOS的装入程序不能为其执行段重定位,而对.EXE文件来说,其执行段可以被重定位。
(7).COM文件只能有一个段,而.EXE文件可以有一个以上的段。
(8).COM文件不能有段堆栈,.EXE文件则可以有。





2011/10/12 17:26 | 
