病毒溯源:磁芯大战
网络安全9病毒
病毒的历史 病毒的历史
•1997年被公认为计算机反病毒界的 宏病毒"年,如Word宏病毒。 年被公认为计算机反病毒界的"宏病毒 年 如 宏病毒。 年被公认为计算机反病毒界的 宏病毒 宏病毒 "宏病毒 主要感染 宏病毒"主要感染 等文件。 宏病毒 主要感染WORD、EXCEL等文件。 、 等文件 •1998年 出现针对 系统的病毒, 年 出现针对Windows95/98系统的病毒,如CIH[台湾的陈 系统的病毒 台湾的陈 盈豪,编写出了破坏性极大的恶性病毒CIH-1.2版,并定于每年 盈豪,编写出了破坏性极大的恶性病毒 版 日发作破坏] 病毒是继DOS病毒、Windows病毒、 病毒、 病毒、 的4月26日发作破坏 。CIH病毒是继 月 日发作破坏 病毒是继 病毒 病毒 宏病毒后的第四类新型病毒。 宏病毒后的第四类新型病毒。 •1999年 Happy99等完全通过 等完全通过Internet传播的病毒的出现标志着 年 等完全通过 传播的病毒的出现标志着 Internet病毒将成为病毒新的增长点。 病毒将成为病毒新的增长点。 病毒将成为病毒新的增长点 •1999年2月,“美丽莎 美丽莎(Melissa) ”病毒席卷了整个欧美大陆 , 病毒席卷了整个欧美大陆 年 月 病毒 亿美元的损失! 在16小时内席卷全球互联网 至少造成 亿美元的损失! 通过 小时内席卷全球互联网 至少造成10亿美元的损失 email传播传播规模(50的n次方,n为传播的次数,病毒会自 传播传播规模( 的 次方, 为传播的次数, 传播传播规模 次方 为传播的次数 动发送到用户通讯簿中的前50个地址 动发送到用户通讯簿中的前 个地址 )
网络时代计算机病毒的新特点 网络时代计算机病毒的新特点
• 病毒与其他技术相融合:某些病毒及普通病毒、蠕虫、 病毒与其他技术相融合:某些病毒及普通病毒、蠕虫、 木马和黑客等技术于一身,具有混合型特征, 木马和黑客等技术于一身,具有混合型特征,破坏性 极强; 极强; • 传播途径多,扩散速度快,主动通过网络和邮件系统 传播途径多,扩散速度快, 传播:很多病毒与internet和intranet紧密结合,通 紧密结合, 传播:很多病毒与 和 紧密结合 过系统漏洞、局域网、网页、邮件等方式进行传播, 过系统漏洞、局域网、网页、邮件等方式进行传播, 扩散速度快。目前此类病毒已有2000多种; 扩散速度快。目前此类病毒已有 多种; 多种 • 欺骗性强:很多病毒具有很强的诱惑性和欺骗性,使 欺骗性强:很多病毒具有很强的诱惑性和欺骗性, 得它更容易传染, 库尔尼科娃”病毒; 得它更容易传染,如“库尔尼科娃”病毒; • 大量消耗系统与网络资源:计算机感染病毒后,病毒 大量消耗系统与网络资源:计算机感染病毒后, 会不断分配内存,导致系统资源很快被消耗, 会不断分配内存,导致系统资源很快被消耗,最终使 得计算机速度越来越慢或网络阻塞; 得计算机速度越来越慢或网络阻塞;
6计算机恶意程序
“爱虫”蠕虫(LOVE-LETTER-FOR-YOU)
2000年5月,一个叫做“爱虫”的计算机蠕虫开始在 全球各地迅速传播。该蠕虫得名的原因在于它使用的邮件 的主题为“I LOVE YOU”。 “爱虫”蠕虫与“梅丽莎”蠕虫非常相似,也是通过微软 Outook电子邮件系统进行传播,但是在传播速度和危害 性上远远超过“梅丽莎”。“梅丽莎”只向通讯簿中的前 50个地址自动发送自己,“爱虫”则是向通讯簿中的所有 地址发送,连传真机号码也不能幸免;“梅丽莎”只能感 染Word文档,除了会堵塞邮件服务器外没有其他严重的破 坏作用,“爱虫”则会改动和删除计算机中的多种图像和 声音文件以及管理文件,造成整个计算机系统的瘫痪。 “爱虫”蠕虫感染的电脑数量多达4500万台,给全球造成 的损失高达一百亿美元。
“CIH病毒” 1998年6月,首例能够破坏PC机系统硬件 的CIH病毒在国内被发现。该病毒产自台湾,最先通过盗 版光盘在美国和欧洲等地广泛流行,后通过Internet等渠 道在全球泛滥。
CIH病毒将感染Windows 9x及在Windows 9x下运行的后缀名为exe、 com、vxd、vxe的应用程序,自解压文件、压缩文件和压缩包中的这 四种后缀名的程序也会受到感染,拷贝到硬盘上压缩名为CAB中的压 缩文件中的Windows 98以及备份包中的Windows98均会受到感染,也 就是说,CIH病毒会毁坏掉磁盘上的所有文件; 其次,CIH病毒会感染硬盘上的所有逻辑驱动器,以2048个扇区为 单位,从硬盘主引导区开始依次往硬盘中写入垃圾数据,直到硬盘数 据被全部破坏为止,最坏的情况是硬盘所有数据(含全部逻辑盘数据) 均被破坏; CIH病毒还会破坏主板上的BIOS,使CMOS的参数回到出厂时的 设置,假如用户的BIOS是非FLASH型的,那么主板将会报废。
病毒发明和发明人介绍
病毒发明和发明人介绍电脑病毒是怎么样发明的呢!和由谁发明的呢!下面由店铺给你做出详细的病毒发明和发明人介绍!希望对你有帮助!病毒发明和发明人介绍:电脑病毒的历史:磁蕊大战电脑病毒并非是最近才出现的新产物, 事实上, 早在一九四九年, 距离第一部商用电脑的出现仍有好几年时, 电脑的先驱者约翰.范纽曼(John Von Neumann)在他所提出的一篇论文[复杂自动装置的理论及组织的进行] , 即已把病毒软件的蓝图勾勒出来当时, 绝大部份的电脑专家都无法想像这种会自我繁殖的软件是可能的, 可是少数几个科学家默默的研究范纽曼的所提出的概念, 直到十年之后, 在美国电话电报公司(AT&T) 的贝尔(Bell)实验室中, 这些概念在一种很奇怪的电子游戏中成形了, 这种电子游戏叫做[磁蕊大战] (core war)磁蕊大战是当时贝尔实验室中三个年轻软件人员在工之余想出来的, 他们是道格拉斯麦耀莱(H, Douglas Mcilroy), 维特.维索斯基(Victor Vysottsky)以及罗伯.莫里斯(Robert T. Morris), 当时三人年纪都只有二十多岁.不同的病毒由不同的人:1983 年11月,在一次国际计算机安全学术会议上,美国学者科恩第一次明确提出计算机病毒的概念,并进行了演示。
世界上公认的第一个在个人电脑上广泛流行的病毒是1986年初诞生的大脑(C-Brain)病毒,编写该病毒的是一对巴基斯坦兄弟,两兄弟经营着一家电脑公司,以出售自己编制的电脑软件为生。
当时,由于当地盗版软件猖獗,为了防止软件被任意非法拷贝,也为了追踪到底有多少人在非法使用他们的软件,于是在1986年年初,他们编写了“大脑(Brain)”病毒,又被称为“巴基斯坦”病毒。
该病毒运行在DOS操作系统下,通过软盘传播,只在盗拷软件时才发作,发作时将盗拷者的硬盘剩余空间吃掉。
病毒发明人介绍:弗雷德·科恩(Fred Cohen)。
计算机安全
(4)通过网络:这种传染扩散极快, 能在很短时间内传遍网络上的 机器。随着Internet的风靡,给病毒的传播又增加了新的途径,它的 发展使病毒可能成为灾难,病毒的传播更迅速,反病毒的任务更加艰 巨。Internet带来两种不同的安全威胁,一种威胁来自文件下载,这 些被浏览的或是被下载的文件可能存在病毒。另一种威胁来自电子邮 件。大多数Internet邮件系统提供了在网络间传送附带格式化文档邮 件的功能,因此,遭受病毒的文档或文件就可能通过网关和邮件服务 器涌入企业网络。网络使用的简易性和开放性使得这种威胁越来越严 重。
Management Information System
主讲:李信儒
8.7 网络钓鱼
(4) 利用木马和黑客技术等手段窃取用户信息
木马制作者通过发送邮件或在网站中隐藏木马等方式大肆传播木马 程序,当感染木马的用户进行网上交易时,木马程序即以键盘记录的方 式获取用户账号和密码,并发送给指定邮箱,用户资金将受到严重威胁 。如木马“证券大盗”,可以通过屏幕快照将用户的网页登录界面保存 为图片,并发送给指定邮箱。
Management Information System
主讲:李信儒
8.4.1 病毒的特征
感染性:病毒的基本特征,自我复制能力。
破坏性:病毒会对系统产生不同程度的影响。 隐藏性:用户通常感觉不到病毒的存在。 潜伏性:一般不会马上发作。 可激活性:病毒因某个事件或数值的出现而发作。 针对性:病毒的编制者往往有特殊的破坏目的。
Management Information System
主讲:李信儒
8.5 木马
Management Information System
主讲:李信儒
8.6 计算机病毒的传染途径
SARS-MERS及其溯源
SARS-CoV来源
Guan et el., 2003, Science
SARS-CoV的来源
HPC, Himalayan palm civet; HB, Hog-badger, RD, raccoon-dog B, Beaver; CM, Chinese muntjac; DC, Domestic cat ; CH, Chinese Hare; CFB, Chinese Ferret-Badger. + positive by RT-PCR or virus isolation, * the PCR product or virus isolates sequenced in the study. ND, not done.
抗体检测: 阳性/总数 (%)
2/184 0/17 ND 2/6 (33.3%) 0/4 5/7 (71%) 0/1
PCR 检测:阳性/总数 (%)
肛拭子 咽拭子
0/210 0/27 0/21 0/21 1/8 (12.5%) 1/8 (12.5%) 0/1
0/55 ND 0/23 ND ND 0/3 ND
Azhar, et al., N Engl J Med. 2014; Briese et al., mBio 2014
SARS-CoV and WIV1
Menachery et al., PNAS, 2016
With the collaboration of Prof. Ralph Baric in North Carolina University
SASR-CoV多克隆抗体对SL-CoV中和作用
Polyclonal antibodies to SARS-CoV receptor domain
磁芯大战
龙源期刊网
磁芯大战
作者:
来源:《中学科技》2015年第06期
你知道在网络世界中被视为“全民公敌”的计算机病毒是怎么产生的吗?
20世纪60年代初,在美国电话电报公司的贝尔实验室中,程序员道格拉斯·麦克利、维克特·维索斯基和罗伯特·莫里斯在玩一种叫“磁芯大战”的电子游戏。
因为程序是游走在计算机的记忆磁芯中的,因此便被命名为磁芯大战。
在玩游戏的过程中,三个年轻人却意外制造了“计算机病毒”的雏形。
磁芯大战游戏需要游戏双方在同一部计算机中各写入一套程序,两套程序在系统内互相“追杀”,直至某一方的程序被另一方的程序完全“吃掉”为止。
当某一程序被困时,事先写入的程序便可以利用复制自身的手段来摆脱对方的控制,这种脱身大法的实现方式便是计算机病毒所具备的最为基本的特征。
在病毒诞生的最初日子里,计算机工作者都严守“不向大众公开这些特定程序”这项不成文的规定。
不幸的是,《科学美国人》的专栏作家杜特尼在1985年《科学美国人》的文章里写了一篇讨论磁芯大战的文章,并首次提出了病毒的概念。
自此之后,潘多拉的魔盒便被打开,计算机病毒也借助互联网迅速在世界范围内传播开来。
(胡光能)。
常见病毒资料
• 应用程序无法正常运行,或提示错误信息
• 根据报警信息判断是否感染病毒
• 通讯异常,如无法上网、通话等
病毒感染的预防与抑制
安装安全软件
• 使用官方认证的安全软件,如杀毒软件、防火墙等
• 定期更新安全软件,以应对新出现的病毒
谨慎下载和安装应用
• 从官方应用商店下载应用,避免从不明来源下载
• 仔细查看应用的权限要求,避免安装恶意应用
• 信誉损失:如企业信誉受损、个人
程序等
国家机密等
声誉受损等
03
手机病毒及其防范
手机病毒的起源与发展
手机病毒的诞生
手机病毒的发展阶段
• 2004年:第一个手机病毒——Cabir病毒出现,针对
• 初期:以破坏手机系统为主要目的
Symbian操作系统
• 中ቤተ መጻሕፍቲ ባይዱ:以传播范围和破坏力为竞争目标
• 2007年:针对Windows Mobile操作系统的手机病毒开
• 不随意点击不明链接,避免下载恶意软件
使用安全的软件与硬件
选择正规渠道购买软件与硬件
• 购买正版软件,避免使用盗版软件
• 选择正规渠道购买硬件,避免购买假冒伪劣产品
定期更新软件与硬件
• 更新软件以修复已知漏洞,提高系统安全性
• 更新硬件固件以修复已知问题,提高设备稳定性
定期更新系统与软件,防范病毒攻击
• 现代:以窃取用户隐私和敏感信息为主要目的
始泛滥
手机病毒的类型及特点
病毒(Virus)
• 特点:附着于其他程序,通过宿主程序进行传播
• 示例:Android病毒、iOS病毒
蠕虫病毒(Worm)
• 特点:自我复制和传播,无需附着于其他程序
2019年湖北省首起登革热本地感染疫情病原分子溯源
•论著.2019年湖北省首起登革热本地感染疫情病原分子溯源邹文菁,蔡昆,李静,徐军强,彭延湖北省疾病预防控制中心,武汉430079摘要:目的分离培养及鉴定湖北省2019年首起本地感染登革热病例病原体,以确定病毒的血清型和基因型并进行溯源。
方法采集患者血清标本用酶联免疫吸附试验(ELISA)进行IgM和IgG抗体检测;用荧光定量PCR方法鉴定登革热病毒血清型;采用C6/36细胞分离登革热病毒后获取病毒E基因和全基因组序列进行系统进化分析,追溯可能的感染来源。
结果该起疫情病原鉴定为登革热病毒血清I型并分离到登革热I型毒株5株;经系统进化分析属于登革热I型中的基因I型,与2019年广州分离株同源性最高。
结论湖北省2019年首起登革热本地感染疫情由I型登革热病毒的基因I型引起。
关键词:登革热病毒;本地感染;序列分析中图分类号:R183文献标识码:A文章编号:1006-2483(2021)02-0043-04DOI:10.3969/j.issn.1006-2483.2021.02.010Molecular traceability of the pathogen of the first local dengueinfection outbreak in Hubei Province in2019ZOU Wenjing,CAI Kun,LI Jing,XYU Junqiang,PENG YanHubei ProvincialCenter for Diseases Control and Prevention,Wuhan430079,ChinaCorresponding author:PENG Yan,Email:68633845@Abstract:Objective To identify the etiology of the first local dengue infection outbreak in Hubei Province in2019,and to determine the serotype and genotype of the virus and trace its source.Methods Serum samples were collected from dengue fever cases in the acute phase.The IgM and IgG antibodies were detected by enzyme-linked immunosorbent assay (ELISA),and the serotype was determined by fluorescence quantitative PCR.C6/36cells were used to isolate virus and obtain virus E gene and complete genome sequence for systematic evolution analysis to trace the possible source of infection. Results The pathogen of the outbreak was identified as dengue serotype I infection,and five virus strains were isolated. Sequence analysis showed that the virus belonged to genotype I of dengue I,and had the highest homology with the strain isolated in Guangzhou,2019.Conclusion The first local dengue infection outbreak in Hubei Province in2019was causedby genotype I of the type I dengue virus.Keywords:Dengue virus;Local infection;Sequence analysis登革热(dengue fever,DF)是由登革热病毒(dengue virus,DENV)引起的经白纹伊蚊叮咬传播的急性蚊媒传染病[1]o登革热广泛流行于全球热带、亚热带的100多个国家和地区,以东南亚国家最为严重[2]o1978年以来,我国广东、广西、海南和福建等省发生过几次大的流行。
第10章网络信息安全.ppt
检测与清除计算机病毒
– 计算机的运行速度和网络的传输速度会变慢。 – 经常出现死机的情况,系统在无外界介入的情况下自行重新 启动。 – 数据与程序丢失。 – 程序运行出现异常现象或不合理的结果。 – 系统不能识别磁盘或硬盘不能正常引导系统。 – 无法正常显示或打印汉字。 – 异常要求用户输入口令。
计 算 机 病 毒 引导模块 传染模块传染条件判断部分 传染部分 表现模块触发条件判断部分 表现(破坏)部分
计算机病毒的防治
预防计算机病毒的入侵
– 及时安装防病毒软件,并保证经常对防病毒软件进行升级。 – 不使用来历不明的程序或软件,也不要使用非法复制或解密 的软件。在运行或使用一些文件时应先使用防病毒软件对其 进行检测。 –
10.1网络信息安全概述
网络信息安全的内容 威胁网络信息安全的主要因素
网络信息安全的内容
物理安全
– 通常是指网络硬件设备与网络外部环境的安全。物理安 全是网络信息安全最基本的保证,主要可以通过采用安 装报警系统、设置门卫等安全保卫措施来实现。
系统与软件安全
– 主要是指计算机网络操作系统以及所使用的各种软件的 安全性。
禁用不必要的服务 打补丁 数据备份
预防止黑客入侵的一些措施
使用防病毒软件并且经常将其升级更新,从而使有破坏性 的程序无法入侵计算机。 在从事网上交易时,不允许网上的商家为了便于你以后购 物储存你的信用卡资料。 使用复杂的难以破译的口令密码,并且经常更换。 在登录对不同的网站时或使用不同的程序时,要使用不同 口令以防止被黑客破译。 经常为所使用的万维网浏览器软件、电子邮件软件以及其 他程序下载安装补丁,更新系统。 只向有安全保证的网站发送信用卡、身份证号码。 使用用户对cookie程序有控制权的安全程序,用户可以控制 是否使用cookie,防止cookie程序会把信息传送回不安全的 网站。 安装防火墙软件,监视数据流动。 不要打开来路不明的电子邮件及其附件。
震网病毒PPT
构建网络安全保障体系的重要性与紧迫性
构建网络安全保障体系的紧迫性
• 随着网络技术的不断发展,网络安全威胁日益严重
• 网络安全保障体系的建设需要政府、企业和个人的共同参与,形成合力
构建网络安全保障体系是保障国家安全和社会稳定的重要手段
• 网络安全保障体系可以及时发现和应对网络攻击,减少损失
• 网络安全保障体系可以保护关键基础设施和敏感数据,防止泄露
控制系统领域
• 如何提高工业控制系统的安全性,防止恶意软件的渗透
• 网络安全防范需要更加注重对工业控制系统的保护
04
震网病毒的防范与应对策略
企业和个人如何防范震网病毒攻击
企业和个人需要提高网络安全意识
• 不要随意下载、安装来源不明的软件
• 定期更新操作系统和软件,修补安全漏洞
企业和个人需要加强网络安全防范措施
• Stuxnet病毒的传播范围有限,受到感染的系统数量相对较少
震网病毒对实体经济的间接影响
Stuxnet病毒对全球石油市场的影响
Stuxnet病毒对全球核电市场的影响
• Stuxnet病毒攻击伊朗的石油设施,导致伊朗石油产量下
• Stuxnet病毒攻击伊朗的核设施,引发国际社会对核电安
降
全的担忧
03
震网病毒的影响与损失评估
震网病毒对目标系统的破坏程度
Stuxnet病毒对伊朗核设施的破坏程度严重
• Stuxnet病毒攻击导致伊朗纳坦兹核设施的部分离心机损坏
• Stuxnet病毒攻击影响了伊朗的核计划进程
Stuxnet病毒对其他目标系统的破坏程度有限
• Stuxnet病毒主要针对伊朗的核设施,对其他国家的工业控制系统影响较小
• Stuxnet病毒的出现引发了网络安全研究和防范的广泛关注
震网电脑病毒攻击事件
震网电脑病毒攻击事件相比以往的安全事件,此次攻击呈现出许多新的手段和特点,值得我们特别关注。
下面由店铺给你做出详细的震网病毒攻击事件介绍!希望对你有帮助!震网病毒攻击如下:4.1 专门攻击工业系统Stuxnet蠕虫的攻击目标直指西门子公司的SIMATIC WinCC系统。
这是一款数据采集与监视控制(SCADA)系统,被广泛用于钢铁、汽车、电力、运输、水利、化工、石油等核心工业领域,特别是国家基础设施工程;它运行于Windows平台,常被部署在与外界隔离的专用局域网中。
一般情况下,蠕虫的攻击价值在于其传播范围的广阔性、攻击目标的普遍性。
此次攻击与此截然相反,最终目标既不在开放主机之上,也不是通用软件。
无论是要渗透到内部网络,还是挖掘大型专用软件的漏洞,都非寻常攻击所能做到。
这也表明攻击的意图十分明确,是一次精心谋划的攻击。
4.2 利用多个零日漏洞Stuxnet蠕虫利用了微软操作系统的下列漏洞:RPC远程执行漏洞(MS08-067)快捷方式文件解析漏洞(MS10-046)打印机后台程序服务漏洞(MS10-061)内核模式驱动程序漏洞(MS10-073)任务计划程序程序漏洞(MS10-092)后四个漏洞都是在Stuxnet中首次被使用,是真正的零日漏洞。
如此大规模的使用多种零日漏洞,并不多见。
这些漏洞并非随意挑选。
从蠕虫的传播方式来看,每一种漏洞都发挥了独特的作用。
比如基于自动播放功的U盘病毒被绝大部分杀毒软件防御的现状下,就使用快捷方式漏洞实现U盘传播。
另一方面,在安天捕获的样本中,有一部分实体的时间戳是2013年3月。
这意味着至少在3月份,上述零日漏洞就已经被攻击者掌握。
但直到7月份大规模爆发,漏洞才首次披露出来。
这期间要控制漏洞不泄露,有一定难度。
4.3 使用数字签名Stuxnet在运行后,释放两个驱动文件:%System32%\drivers\mrxcls.sys%System32%\drivers\mrxnet.sys这两个驱动文件伪装RealTek的数字签名(图7)以躲避杀毒软件的查杀。
震网病毒的事件介绍
震网病毒的事件介绍伊朗到底是什么时候才发现中毒的,外界不得而知。
震网病毒到底有什么影响呢!下面由店铺给你做出详细的震网病毒事假介绍!希望对你有帮助!震网病毒事件介绍:2010年,震网病毒公布后,引起了信息安全界的轰动,经过许多专家的深入研究,它针对纳坦兹核工厂的攻击意图已经被揭露成了司马昭之心。
但即便如此,伊朗仍然矢口否认核工厂遭到了攻击。
当然,伊朗到底是真的认为自己的工厂固若汤金,还是出于某种宣传策略而拒不承认,外界同样也不得而知了。
受害一方不肯承认,作案一方同样也没人出来领功。
开发像震网这样一款高度复杂的病毒,对资金、人才、情报、组织等各方面都有极高的要求,再加上其独特的攻击目标设定,世界上有这种能力和动机的,只有美国或以色列政府。
但美国和以色列并不承认自己与此有关,从病毒代码中也找不出什么证据能牵涉到美以两国,外界也只能停留在猜测而已。
震网病毒如同一件孤独的凶器,不知道谁制造了它,也不知道它杀害过谁,外界只能从那锋利的刀刃推测它可怕的战斗力。
直到2012年,伊朗核问题波澜已定,一些美国退休官员才向《纽约时报》透露,针对伊朗核工厂的攻击,是由布什总统发起的、经过奥巴马总统大力推动的、一场精心策划的网络战争。
2006年伊朗重启核计划时,形势正如伊朗所料,美国的选择并不多。
美军已经占领了伊拉克,却迟迟找不到传说中的大规模杀伤性武器,布什总统在国内国际政治上都处于被动局面,没有足够的政治能量再次以消灭核武器之名发动一场伊朗战争。
但如果不解决伊朗核问题,又无法对以色列交待,因为伊朗一旦拥有核武器,首当其冲的使用目标必定是以色列,以色列感受到极大的威胁。
以色列一再表态,要像1981年空袭伊拉克核反应堆一样,也对纳坦兹核工厂来一场外科手术式的打击,将伊朗核计划消灭在萌芽状态。
如果任由以色列空袭伊朗,这无疑又将搅乱中东局势,使地区纷争进一步升级,当地的反美情绪也会更加狂热化。
因此,当时的美国夹在以色列和伊朗之间左右为难。
磁芯大战
原题Corewar Tutorial Pt INewsgroups: rec.games.corewar(Mark A. Durham)Subject: Intro to Redcode Part IOrganization: Rice University, Houston, TXDate: Thu, 14 Nov 1991 09:41:37 GMTRedcode介绍-----------------------I. 前言 - 读者注意! { 第一部分 }II. 标记 { 第一部分 }III. MARS的特性 { 第一部分 }IV. 地址模式 { 第二部分 }V. 指令集 { 第二部分 }---------------------------------------------------------------------- Introduction to Redcode-----------------------I. Preface - Reader Beware! { Part I }II. Notation { Part I }III. MARS Peculiarities { Part I }IV. Address Modes { Part II }V. Instruction Set { Part II }----------------------------------------------------------------------前言The name "Core War" arguably can be claimed as public domain.Thus, any program can pass itself off as an implementation of CoreWar.(译者:不会翻译呀~)理论上,大家都希望在一个系统上写Redcode,并且知道在所有其他系统上它都会以相同的方式运行. 哎呀,这没什么关系呀.I. Preface - Reader Beware!The name "Core War" arguably can be claimed as public domain.Thus, any program can pass itself off as an implementation of CoreWar. Ideally, one would like to write a Redcode program on onesystemand know that it will run in exactly the same manner on every othersystem. Alas, this is not the case.Core War 有四种系统:非ICWS系统, ICWS'86, ICWS'88, 和扩展系统.非ICWS系统通常与A. K. Dewdney在《科学的美国》上的一篇文章"Computer Recreations" 中描述的Core War不同.ICWS'86 和 ICWS'88 系统则分别遵循"International Core War Society"在1986年和1988年制定的规则.扩展系统一般支持ICWS'86, ICWS'88规则,并有一定的扩展.我将会谈到常用的公共扩展,如果它们在所有扩展系统上都可用的话(大部分都不是).Basically, Core War systems fall under one of four catagories:Non-ICWS, ICWS'86, ICWS'88, or Extended. Non-ICWS systems areusuallya variant of Core War as described by A. K. Dewdney in his "ComputerRecreations" articles appearing in Scientific American. ICWS'86 andICWS'88 systems conform to the standards set out by theInternationalCore War Society in their standards of 1986 and 1988, respectively.Extended systems generally support ICWS'86, ICWS'88, and proprietaryextensions to those standards. I will discuss frequently commonextensions as if they were available on all Extended systems (whichthey most certainly are not).我将不会在这里讨论非ICWS系统. 如果你能读懂这篇文章,你就可以轻易理解大多数非ICWS系统. 虽然ICWS'86和ICWS'88被称为"标准",但是它们都受歧义性和额外标准问题的困扰,我将尝试指出来.注意. 因为几乎所有的解释想别的一样合理,我自然更喜欢"我"的解释.我会尝试指出其他解释有歧义的地方,并清楚表明我的或其他人的相关解释.I will not describe Non-ICWS systems in this article. Most Non-ICWS systems will be easily understood if you understand the systemsdescribed in this article however. Although called "standards",ICWS'86 and ICWS'88 (to a lesser extent) both suffer fromambiguitiesand extra-standard issues which I will try to address.This is where the reader should beware. Because almost anyinterpretation of the standard(s) is as valid as any other, Inaturally prefer MY interpretation. I will try to point out othercommon interpretations when ambiguities arise though, and I willclearly indicate what is interpretation (mine or otherwise) as such.You have been warned!----------------------------------------------------------------------标记"86:" 表示ICWS'86的特性. "88:" 则表示ICWS'88的. "X:" 表示扩展系统."Durham:"表示我偏好的解释. "其他:" 其他人的解释. "注释:"表示我在做什么和为什么这样. "评论:" 表示我跟从或反对该做法.没有冒号后缀的可视为普通.II. Notation"86:" will indicate an ICWS'86 feature. "88:" will indicate anICWS'88 feature. "X:" will indicate an Extended feature. "Durham:"will indicate my biased interpretation. "Other:" will indicateinterpretations adhered to by others. "Commentary:" is meexplainingwhat I am doing and why. "Editorial:" is me railing for or againstcertain usages. Items without colon-suffixed prefaces can beconsidered universal.Redcode由以下格式的汇编语言指令组成<标签> <操作符> <A-模式><A-字段>, <B-模式><B-字段> <注释>Redcode consists of assembly language instructions of the form<label> <opcode> <A-mode><A-field>, <B-mode><B-field> <comment>Recode例程:; Imp; by A. K. Dewdney;imp MOV imp, imp+1 ; 程序把自己复制到前面一个指令END ; 并且移动穿过内存(译者注:IMP是最短的Core War战士,只有一句)An example Recode program:; Imp; by A. K. Dewdney;imp MOV imp, imp+1 ; This program copies itself ahead oneEND ; instruction and moves through memory.<标签>是可选的.86: <标签> 从第一列开始,1到8个字符长,必须以字母开头且由合法字符组成. 不分大小写("abc"等同于"ABC").88: <标签> 同上, 但长度不限和区分大小写. 只有前8个字符有意义X: <标签>前面可以有任意多的空白(空格, TAB键,和新行), 长度任意,必须以字母开头且由合法字符组成. ("abc" 不同于 "ABC").注释: 我全用小写字母写标签,这样来和操作符和操作数区分The <label> is optional.86: <label> begins in the first column, is one to eight characterslong, beginning with an alphabetic character and consistingentirely of alphanumerals. Case is ignored ("abc" is equivalentto "ABC").88: <label> as above, except length is not limited and case is not addressed. Only the first eight characters are consideredsignificant.X: <label> can be preceded by any amount of whitespace (spaces,tabs,and newlines), consists of any number of significantalphanumeralsbut must start with an alphabetic, and case is significant("abc"is different from "ABC").Commentary: I will always use lowercase letters for labels todistinguish labels from opcodes and family operands.操作符和<标签>之间用空白隔开. 操作符不区分大小写. DAT, MOV,ADD, SUB, JMP, JMZ, JMN, DJN, CMP, SPL, 和 END 都是可用的操作符86: SPACE 也作为一个操作符.88: SLT 和 EQU 是操作符. SPACE 不是.X: 以上的和XCH,PCT都是操作符,还有无数的扩展.注释: END, SPACE, 和 EQU是伪指令,因为它们向汇编程序指明了操作,但不产生可执行的代码. 我用大写的操作符来和<标签>,文本区分开.The <opcode> is separated from the <label> (if there is one) bywhitespace. Opcodes may be entered in either uppercase orlowercase. The case does not alter the instruction. DAT, MOV,ADD, SUB, JMP, JMZ, JMN, DJN, CMP, SPL, and END are acceptableopcodes.86: SPACE is also recognized as an opcode.88: SLT and EQU are recognized as opcodes. SPACE is not.X: All of the above are recognized as opcodes as well as XCH andPCT,plus countless other extensions.Commentary: END, SPACE, and EQU are known as pseudo-ops because theyreally indicate instructions to the assembler and do not produceexecutable code. I will always capitalize opcodes andpseudo-opsto distinguish them from labels and text.The <A-模式> and <A-字段> 合起来表示A-操作数. 类似地, the <B-模式><B-字段> 合起来表示B-操作数. A-操作数对某些操作符来说是可选的.B-操作数对某些操作符来说也是可选的. 只有END可以不带操作数86: 操作数用逗号隔开88: 操作数用空白隔开X: 操作数可用空白或逗号隔开. 少了一个逗号可能由于歧义而导致无法预料的后果. 注释: '88标准强迫你在写一个操作数时不能用空格, 接收空格来分开两个操作数. 我喜欢在表达式里用空格, 因此我用逗号来分开操作数,我在这里会清楚地这样做. The <A-mode> and <A-field> taken together are referred to as theA-operand. Similarly, the <B-mode><B-field> combination isknownas the B-operand. The A-operand is optional for some opcodes.The B-operand is optional for some opcodes. Only END can gowithout at least one operand.86: Operands are separated by a comma.88: Operands are separated by whitespace.X: Operands are separated by whitespace and/or a comma. Lack of acomma can lead to unexpected behaviour for ambiguous constructs. Commentary: The '88 standard forces you to write an operand without whitespace, reserving whitespace to separate the operands. Ilikewhitespace in my expressions, therefore I prefer to separate myoperands with a comma and will do so here for clarity.<模式> 有 # (即时寻址), @ (间接寻址), 或 < (86: Auto-Decrement 间接寻址88: Pre-Decrement 间接寻址). 缺省为直接寻址.86: $ 表示直接寻址88: $ 不可用X: $ 和86一样注释: Auto-Decrement 间接寻址和Pre-Decrement 间接寻址的区别是语义的,而非依据造句法的(译者:我不太明白~)<mode> is # (Immediate Addressing), @ (Indirect Addressing), or <(86: Auto-Decrement Indirect, 88: Pre-Decrement Indirect). Amissing mode indicates Direct Addressing.86: $ is an acceptable mode, also indicating Direct Addressing.88: $ is not an acceptable mode.X: $ is an acceptable mode as in 86:.Commentary: The distinction between Auto-Decrement IndirectAddressingand Pre-Decrement Indirect Addressing is semantic, notsyntactic.<字段> 是标签和整数的任意组合,由 + (加号)和 - (减号)隔开.86: 括号被明确禁止. "*" 定义为一个特殊的标签,表示当前语句88: 添加了 * (乘号) and / (整数除法). "*" 不再象86一样是特殊的标签X: 表达式中允许出现括号和空格.注释:"*" 作为特殊的标签对某些编译程序来说可能很有用, 但对Redcode编译程序就完全是多余的. 在Redcode中当前语句总是能用0来表示.<field> is any combination of labels and integers separated by thearithmetic operators + (addition) and - (subtraction).86: Parentheses are explicitly forbidden. "*" is defined as aspeciallabel symbol meaning the current statement.88: Arithmetic operators * (multiplication) and / (integer division)are added. "*" is NOT allowed as a special label as in 86:.X: Parentheses and whitespace are permitted in expressions.Commentary: The use of "*" as meaning the current statement may beuseful in some real assemblers, but is completely superfluous inaRedcode assembler. The current statement can always be referredto as 0 in Redcode.<注释> 由 ; (分号)开头, 在新行结束(译者:象C++的//), 可以是任意数量的字符. 注释可以自己占一行,前面不需要有指令88: 明确允许空行<comment> begins with a ; (semicolon), ends with a newline, and canhave any number of intervening characters. A comment may appearon a line by itself with no instruction preceding it.88: Blank lines are explicitly allowed.我常用"A" 来表示A-操作数,"B" 表示B-操作数(大写是重要的).用"a" 来表示A-字段, "b" 表示B-字段. 所以我从不用"a"或"b"做标签.我用花括号来包括一类操作数或指令. 所以 "A" 就等同于"{ a, #a, @a, <a }".用 "???" 来表示任意操作数,"x" 或 "label"表示一个标签. 因此一句完整的Redcode语句就写成这样x ??? A, B ; 这描述了所有可能的Redcode语句.I will often use "A" to mean any A-operand and "B" to mean anyB-operand (capitalization is important). I use "a" to mean any A-field and "b" to mean any B-field. For this reason, I never use "a"or "b" as an actual label.I enclose sets of operands or instructions in curly braces. Thus"A" is equivalent to "{ a, #a, @a, <a }". I use "???" to mean anyopcode and "x" or "label" as an arbitrary label. Thus, the completefamily of acceptable Redcode statements can be represented asx ??? A, B ; This represents all possible Redcode statements."???"很少使用,因为我们通常在讨论特定操作符的特点. 方便起见,我常用 "x-1"(尽管它不合理) 表示标签 "x" 的前一条语句. "M" 则总是一个表示MARS内存大小的整数."???" is rarely used as most often we wish to discuss the behaviourofa specific opcode. I will often use labels such as "x-1" (despiteitsillegality) for the instruction before the instruction labelled "x",for the logically obvious reason. "M" always stands for the integerwith the same value as the MARS memory size.----------------------------------------------------------------------MARS的特性MARS有两个特点,使Redcode和其他汇编语言不同. 首先,MARS没有绝对地址.第二,内存是循环的.由于没有绝对地址, 所以Redcode都是用相对寻址写的. 在相对寻址里, 所以地址都解释为当前执行指令的位移. 地址 0 就是当前执行指令. 地址 -1 是前一个当前执行指令(假设没有跳转或分支).地址 +1 是下一个执行指令 (假设没有跳转或分支).因为内存是循环的, 每条指令都有无穷多个地址. 假设内存大小为M, 当前指令的地址有 { ..., -2M, -M, 0, M, 2M, ... }. 前一个指令是{ ..., -1-2M, -1-M, -1,M-1, 2M-1, ... }. 下一个指令是{ ..., 1-2M, 1-M, 1, M+1, 2M+1, ... }.III. MARS PeculiaritiesThere are two things about MARS which make Redcode different fromany other assembly language. The first of these is that there arenoabsolute addresses in MARS. The second is that memory is circular.Because there are no absolute addresses, all Redcode is writtenusing relative addressing. In relative addressing, all addressesareinterpreted as offsets from the currently executing instruction. Address 0 is the currently executing instruction. Address -1 wasthepreviously executed instruction (assuming no jumps or branches). Address +1 is the next instruction to execute (again assuming no jumpsor branches).Because memory is circular, each instruction has an infinitenumberof addresses. Assuming a memory size of M, the current instruction has the addresses { ..., -2M, -M, 0, M, 2M, ... }. The previous instruction is { ..., -1-2M, -1-M, -1, M-1, 2M-1, ... }. The next instruction is { ..., 1-2M, 1-M, 1, M+1, 2M+1, ... }.注释: MARS因历史原因通过标准化字段为0 到 M-1 的正整数来运行这些利用了环状特性的目标代码. 由于内存大小在编程阶段常常是未知的,MARS有一个引导程序在处理代码放置和初始化任务指针之余,使字段标准化. 注释:Redcode程序常想提早知道MARS的内存大小. 有时这是不可能的.因为标准化字段只能用0 到 M-1 的整数来表示, 我们不能用M来表示.较好的东西是? M-1. 但我们怎样在不知道内存大小的时候写M-1? 回忆上面讲的,-1 就等于 M-1. 最后要注意的: -1/2 是等于 0 的(而不是 M/2[译者注:是(m-1)/2吧?]) 汇编程序对表达式求值得 -0.5,然后舍去了.Commentary: MARS systems have historically been made to operate on object code which takes advantage of this circularity byinsistingthat fields be normalized to positive integers between 0 and M-1, inclusive. Since memory size is often not known at the time of assembly, a loader in the MARS system (which does know the memory size) takes care of field normalization in addition to its normal operations of code placement and task pointer initialization. Commentary: Redcode programmers often want to know what the memory size of the MARS is ahead of time. This is not always possible. Since normalized fields can only represent integers between 0andM-1 inclusive, we can not represent M in a normalized field.Thenext best thing? M-1. But how can we write M-1 when we do notknow the memory size? Recall from above that -1 is equivalenttoM-1. Final word of caution: -1/2 is assembled as 0 (not as M/2) since the expression is evaluated within the assembler as -0.5andthen truncated.86: 只能载入两个编译了的Redcode程序(战士)到MARS内存(磁芯).88: 磁芯在没有载入战士时被初始化为(充满)DAT 0, 0.可以载入任意数量的战士.注释: 比赛时几乎都是一对一,只载入对战的两个战士.86: Only two assembled-Redcode programs (warriors) are loaded intoMARS memory (core).88: Core is initialized to (filled with) DAT 0, 0 before loading anywarriors. Any number of warriors may be loaded into core.Commentary: Tournaments almost always pit warrior versus warriorwithonly two warriors in core.MARS是一个多任务系统. 战士以一个进程开始,但可以"分裂"出更多的任务. 当一个战士的所有进程被杀死,它就输了. 当只剩下一个战士可以继续运行,那它就是胜利者.86: 每个战士最多只能有 64 个进程.88: 不限制进程数量---------------------------------------------------------------------- MARS is a multi-tasking system. Warriors start as just one task,but can "split" off additional tasks. When all of a warriors taskshave been killed, the warrior is declared dead. When there is asolewarrior still executing in core, that warrior is declared thewinner.86: Tasks are limited to a maximum of 64 for each warrior.88: The task limit is not set by the standard.---------------------------------------------------------------------- 第二部分:Corewar Tutorial Pt IINewsgroups: rec.games.corewar(Mark A. Durham)Subject: Intro to Redcode Part IIOrganization: Rice University, Houston, TXDate: Thu, 14 Nov 1991 09:45:13 GMT地址模式寻址模式巧妙地(有时不太巧妙地) 改变指令的作用.这里简单说一下.细节留待介绍指令集时再讲.井号(#) 表示操作数为即时寻址模式.即时寻址模式数据包含在当前指令的字段里. 如果 A-模式是即时的话, 数据就在A-字段. 如果 B-模式是即时的话, 数据就在B-字段.如果没有指明模式 (86: 或使用 '$' ), 缺省为直接寻址模式. 直接寻址模式指向相对于当前指令的一条指令. 地址 0 指向当前指令. 直接地址-1指向(物理上) 前一条指令. 直接地址 +1指向(物理上)下一条指令.IV. Address ModesAddressing modes subtly (sometimes not-so-subtly) alter thebehaviour of instructions. A somewhat brief description of their general properties is given here. Specifics will be left to the instruction set section.An octothorpe (#) is used to indicate an operand with anImmediateAddress Mode. Immediate mode data is contained in the current instruction's field. If the A-mode is immediate, the data is in the A-field. If the B-mode is immediate, the data is in the B-field.If no mode indicator is present (86: or the US dollar sign '$' is present), Direct Address Mode is used. Direct addresses refer to instructions relative to the current instruction. Address 0 referstothe current instruction. Direct address -1 refers to the (physically)previous instruction. Direct address +1 refers to the (physically) next instruction.@ 表示间接寻址模式. 在间接寻址模式中, 间接地址和直接寻址一样也指向一条指令, 但目标不是间接地址指向的指令,而是间接地址指向的指令的B-字段表示的地址.(译者注:混乱了吧,有点象C语言里"指针的指针"的意思)例如:x-2 DAT #0, #0 ; 目标指令x-1 DAT #0, #-1 ; 指针指令x MOV 0, @-1 ; 复制自己到 x-2.The commercial-at (@) is used to indicate Indirect Address Mode.In indirect addressing, the indirect address points to aninstructionas in direct addressing, except the target is not the instruction to which the indirect address points but rather the instruction pointed to by the B-field of the instruct pointed to by the indirectaddress.Example:x-2 DAT #0, #0 ; Target instruction.x-1 DAT #0, #-1 ; Pointer instruction.x MOV 0, @-1 ; Copies this instruction to location x-2.小于号 (<) 表示 (86: 自动-, 88: 预-)消耗间接寻址模式. 它的作用和间接寻址模式一样,但指针在使用前会被消耗.(译者注:好像就是先减 1 再取值)例如:x-2 DAT #0, #0 ; 目标指令x-1 DAT #0, #0 ; 指针指令. 和@的例子比较一下.x MOV 0, <-1 ; 复制自己到 x-2..The less-than (<) is used to indicate (86: Auto-, 88: Pre-) Decrement Indirect Address Mode. Its behaviour is just like that of Indirect Address Mode, except the pointer is decremented before use. Example:x-2 DAT #0, #0 ; Target instructionx-1 DAT #0, #0 ; Pointer instruction. Compare to @ example.x MOV 0, <-1 ; Copies this instruction to location x-2.注释:虽然消耗间接寻址模式看起来象间接寻址模式的简单扩展, 有时候它真的很巧妙 - 特别是与 DJN 一起使用. 有一点要注意,它的名字从 '86标准的自动消耗间接寻址模式该为 '88 标准的预消耗间接寻址模式.它们的差异在下面提到,这对一般的Redcode程序员来说是不太重要的. 我建议没兴趣的人跳过下一段.Commentary: Although Decrement Indirect addressing appears to be a simple extension of Indirect addressing, it is really verytrickyat times - especially when combined with DJN. There are sematic differences between the '86 and '88 standards, thus the changeinname from Auto-Decrement to Pre-Decrement. These differencesarediscussed below. This discussion is non-essential for theaverageRedcode programmer. I suggesting skipping to the next sectionforthe weak-stomached.(译者:我也不想翻译呀~但还是拿出专业精神~)86: Durham: 指令从内存取出到一个指令寄存器. 再对每个操作数求值,储存位置(到地址寄存器)和指令(到数值寄存器).求值之后指令被执行.操作数求值: 如果是即时模式, 地址寄存器置为0 (当前指令地址) 数值寄存器置为当前指令. 如果是直接模式, 地址寄存器置为字段的值,数值寄存器置为地址寄存器指向的指令. 如果是间接模式,地址寄存器置为字段与字段指向的指令的B-字段的和,数值寄存器置为地址寄存器指向的指令.如果是自动消耗模式, 地址寄存器置为一个比字段与字段指向的指令的B-字段的和少 1 的值,数值寄存器置为地址寄存器指向的指令.操作数被求值后(但在指令执行前), 如果任一模式是自动消耗的话,相应的内存地址会消耗(译者:就是减1).如果两个模式都是自动消耗且两个字段都指向同一指针, 内存地址会消耗两次. 注意:现在指令指向与任一操作数以及它在寄存器中的任何一个拷贝都不同的指令.86: 其他: 和上述相同,除了没有寄存器.所有过程都在内存中进行.86: Durham: Instructions are fetched from memory into an instruction register. Each operand is evaluated, storing a location (intoanaddress register) and an instruction (into a value register) foreach operand. After the operands have been evaluated, theinstruction is executed.Operand Evaluation: If the mode is immediate, the addressregisteris loaded with 0 (the current instruction's address) and thevalueregister is loaded with the current instruction. If the mode is direct, the address register is loaded with the field value andthe value register is loaded with the instruction pointed to by the address register. If the mode is indirect, the addressregister is loaded with the sum of the field value and theB-fieldvalue of the instruction pointed to by the field value and the value register is loaded with the instruction pointed to by the address register. If the mode is auto-decrement, the address register is loaded with a value one less than the sum of thefieldvalue and the B-field value of the instruction pointed to by the field value and the value register is loaded with theinstructionpointed to by the address register. AFTER the operands havebeenevaluated (but before instruction execution), if either mode was auto-decrement, the appropriate memory location is decremented.If both modes were auto-decrement and both fields pointed to the same pointer, that memory location is decremented twice. Notethat this instruction in memory then points to a different instruction than either operand and also differs from any copiesof it in registers.86: Other: As above, except there are no registers. Everything is done in memory.注释: ICWS'86清楚说明指令寄存器的使用,但其他操作数地址和数值寄存器都只是隐含的. 歧义性和缺乏对内存和寄存器工作原理的清晰描述让ICWS'86 备受责难,因而促使 ICWS'88诞生.88: 同上,除了所有工作都在内存中完成,以及预消耗间接寻址取代了自动消耗间接寻址. 预消耗间接寻址在操作数求值时消耗内存(译者:注意消耗内存的意思是令该地址的值减1)而不是求值之后. 它先对A操作数求值再对B操作数求值.Commentary: ICWS'86 clearly states the use of an instruction register,but the other operand address and value registers are onlyimplied. Ambiguities and lack of strong statements delineating what takes place in memory and what takes place in registerscondemned ICWS'86 to eternal confusion and gave birth toICWS'88.88: As above except everything is done in memory and Pre-DecrementIndirect replaces Auto-Decrement Indirect. Pre-DecrementIndirectdecrements memory as it is evaluating the operands rather thanafter. It evaluates operand A before evaluating operand B.---------------------------------------------------------------------- 指令集DAT A, BDAT (数据data) 指令有两个作用. 一,它允许你储存数据作指针,位移等之用二, 执行DAT指令的任何进程都会从进程队列移走. 当战士所有的进程都从进程队列移走,那它就输了.86: DAT 只能有一个操作数-- B-操作数. A-字段没有定义(例子中是 #0),但B-操作数相同的 DAT 指令必须相同.88: DAT 允许有两个操作数,但只有两种模式 - 即时和预消耗.X: DAT 可带一个或两个任意模式的操作数. 如果只有一个操作数,将被认为是B-操作数,A-操作数则默认为 #0注释: 值得注意的是消耗将在进程移出队列之前发生, 因为指令在操作数求值后执行V. Instruction SetDAT A, BThe DAT (data) instruction serves two purposes. First, it allowsyou to store data for use as pointers, offsets, etc. Second, anytaskwhich executes a DAT instruction is removed from the task queue.Whenall of warrior's tasks have been removed from the queue, thatwarriorhas lost.86: DAT allows only one operand - the B-operand. The A-field isleftundefined (the example shows #0), but comparisons of DATinstructions with identical B-operands must yield equality.88: DAT allows two operands but only two modes - immediate andpre-decrement.X: DAT takes one or two operands and accepts all modes. If only oneoperand is present, that operand is considered to be theB-operandand the A-operand defaults to #0.Commentary: It is important to note that any decrement(s) WILL occurbefore the task is removed from the queue since the instructionexecutes only after the operand evaluation.MOV A, BMOV (移动move) 指令复制一个字段值(如果均为即时模式)或整个指令 (如果均不是即时模式) 到磁芯的另一个位置(从 A 到 B).86: Durham: MOV #a, #b 把自己改写为 MOV #a, #a.注释: 在 ICWS'86 中有一个印刷上的错误,把 MOV #a, B 解释错了.有ICWS'86的人, 请把第四页第二栏倒数第二行的"B-field" 删去.88: 不允许使用即时的B-模式.(译者:可能译得不对)X: 允许使用即时的B-模式,和B-操作数为0的效果相同. (参阅 86: Durham: 上面). MOV A, BThe MOV (move) instruction either copies a field value (if eithermode is immediate) or an entire instruction (if neither mode isimmediate) to another location in core (from A to B).86: Durham: MOV #a, #b changes itself to MOV #a, #a.Commentary: There is a clear typographical error in ICWS'86 whichchanges the interpretation of MOV #a, B to somethingnon-sensical.For those with a copy of ICWS'86, delete the term "B-field" fromthe next-to-last line of the second column on page 4.88: No immediate B-modes are allowed.X: Immediate B-modes are allowed and have the same effect as aB-operand of 0. (See 86: Durham: above).ADD A, B86: ADD 指令把 A-位置的值和B-位置的值相加, 取代B-位置的旧内容88: 如果 A-模式是即时模式, ADD的作用同上.如果A-模式不是即时模式,则A-操作数指向的指令的A-字段和B-字段分别于B-操作数指向的指令的A-字段和B-字段相加. B-模式不能为即时模式.X: B-模式可为即时模式,作用与86:相同.例如: 当执行一次之后 ADD #2, #3 变成 ADD #2, #5 .ADD A, B86: The ADD instruction adds the value at the A-location to thevalueat the B-location, replacing the B-location's old contents.88: If the A-mode is immediate, ADD is interpreted as above. If theA-mode is not immediate, both the A-field and the B-field of theinstruction pointed to by the A-operand are added to the A-fieldand B-field of the instruction pointed to by the B-operand,respectively. The B-mode can not be immediate.X: Immediate B-modes are allowed and have the same effect as in 86:. Example: ADD #2, #3 becomes ADD #2, #5 when executed once.SUB A, BSUB (减subtract) 指令和上述的情况相同,不同的是 A 减去 B.SUB A, BThe SUB (subtract) instruction is interpreted as above for allthree cases, except A is subtracted from B.JMP A, BJMP (跳转jump) 指令改变指令指针为 A-操作数.86: JMP 只能有一个操作数 - A-操作数. B-操作数看作 #0.88: JMP 允许两个操作数, 但A-模式不能为即时模式X: JMP 允许两个操作数, A-模式可以是即时模式.即时的A-模式操作数在运行是看成是 JMP 0, B .JMP A, BThe JMP (jump) instruction changes the instruction pointer topointto the instruction pointed to by the A-operand.86: JMP allows only one operand - the A-operand. The B-operand is shown as #0.88: JMP allows both operands, but the A-mode can not be immediate.X: JMP allows both operands and the A-mode can be immediate. An immediate A-mode operand is treated just like JMP 0, B whenexecuted.JMZ A, BJMZ (为零跳转jump if zero) 指令当B-操作数指向的指令的B-字段为零时,跳转到A-操作数指向的指令.88: 不允许即时的 A-模式.JMZ A, BThe JMZ (jump if zero) instruction jumps to the instructionpointedto by the A-operand only if the B-field of the instruction pointedtoby the B-operand is zero.88: Immediate A-modes are not allowed.JMN A, BJMN (非零跳转jump if non-zero) 指令当B-操作数指向的指令的B-字段不为零时,跳转到A-操作数指向的指令.88: 不允许即时的 A-模式.JMN A, BThe JMN (jump if non-zero) instruction jumps to the instruction pointed to by the A-operand only if the B-field of the instruction pointed to by the B-operand is non-zero.88: Immediate A-modes are not allowed.DJN A, BDJN (消耗后非零跳转decrement and jump if non-zero) 指令消耗B-操作数指向的指令的B-字段,消耗后不为零就跳转到A-操作数指向的指令.88: 不允许即时的 A-模式.DJN A, BThe DJN (decrement and jump if non-zero) instruction causes theB-field of the instruction pointed to by the B-operand to be decremented. If the decremented values is non-zero, a jump to the instruction pointed to by the A-operand is taken.88: Immediate A-modes are not allowed.CMP A, BCMP (比较,相等时跳过compare, skip if equal)指令比较两个字段(如果都是即时模式)或两条完整的指令(如果均不是即时模式), 当两者相等时跳过下一条指令. 注释: 在 ICWS'86 中有一个印刷上的错误,把 CMP #a, B 解释错了.有ICWS'86的人, 请把第5页第2栏第5行的"B-field" 删去.同时,第6页例子的注释写反了("相等" 应为 "不相等" 反之亦然). 虽然标签是写对了.88: 不允许即时的 B-模式.CMP A, BThe CMP (compare, skip if equal) instruction compares two fields(if either mode is immediate) or two entire instructions (if neithermode is immediate) and skips the next instruction if the two are equivalent.Commentary: There is a clear typographical error in ICWS'86 whichchanges the interpretation of CMP #a, B to somethingnon-sensical.For those with a copy of ICWS'86, delete the term "B-field" fromthe fifth line from the bottom of the second column on page 5.Also, the comments to the example on page 6 have been switched(equal is not equal and vice versa). The labels are correctthough.88: Immediate B-modes are not allowed.SPL A, BSPL (分裂split)指令分裂成战士当前进程和一个新进程. 例如: 两个战士的战斗, 1 和 2, 战士 1 有两个进程 (1 和 1') 战士 2 只有一个进程,看起来就想这样: 1, 2, 1', 2, 1, 2, 1', 2, 等等.86: SPL 只允许有一个操作数 - B-操作数. A-操作数看成 #0. 执行SPL后,下一条执行的指令是新增的进程(新进程放在进程队列的前面). 每个战士最多可以有64个进程.88: SPL分裂 A-操作数,而不是B-操作数.执行SPL后,下一条执行的指令是原来没有新增进程时会执行到的那个进程(新进程放在进程队列的后面)没有明确限制进程的数量. 不允许即时模式的 A-操作数.X: 允许即时模式的 A-操作数,和 SPL 0, B 的效果一样.SPL A, BThe SPL (split) instruction splits the execution between thiswarrior's currently running tasks and a new task. Example: A battlebetween two warriors, 1 and 2, where warrior 1 has two tasks (1 and1') and warrior 2 has only one task would look like this: 1, 2, 1',2,。
研究证实SARS新病毒存在 源头可能来自蝙蝠
研究证实SARS新病毒存在源头可能来自蝙蝠
佚名
【期刊名称】《科技与生活》
【年(卷),期】2012(000)022
【摘要】国际在线专稿:据法新社11月20日报道,荷兰科学家为7月病故的一名60岁沙特阿拉伯男子感染的病毒进行化验后,证实这病毒与SARS同属一个家族,并与亚洲蝙蝠身上找到的病毒相近。
【总页数】1页(P4-4)
【正文语种】中文
【中图分类】G219.712.2
【相关文献】
1.菊头蝙蝠可能携SARS病毒 [J],
2.蝙蝠可能招致下一次SARS流行病 [J], 胡德良(编译)
3.农业部调查组证实SARS病毒来自野生动物 [J],
4.广东科学家发现证实人体存在SARS病毒受体 [J],
5.美研究证实一新病毒可使儿童患呼吸系统疾病 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
圆点病毒的发现,消毒和免疫
圆点病毒的发现,消毒和免疫
胡盛品
【期刊名称】《株冶科技》
【年(卷),期】1991(019)002
【总页数】3页(P136-138)
【作者】胡盛品
【作者单位】无
【正文语种】中文
【中图分类】TP306.3
【相关文献】
1.计算机圆点“病毒”的诊断排除及免疫方法 [J], 赵辛卯
2.操作系统型病毒(圆点病毒)的传播,发病及防治 [J], 吴微行
3.加强主动检测提高人类免疫缺陷病毒感染者与获得性免疫缺陷综合征患者发现及时率 [J], 赵启玉;梅林;韩红;韩婷;车晓文;王蕾
4.国外有关病毒消毒剂的研究[选登] (二)某些消毒剂对传染性囊病病毒和鸡呼肠孤病毒的消毒效果 [J], G.Meulemans;P.Halen
5.武汉病毒所发现沙粒病毒影响天然免疫系统的新机制 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
病毒溯源:磁芯大战
宋பைடு நூலகம்兵
2001年 2期
在各式病毒层出不穷的今天,人们很少去问:病毒到底是怎么出现的?而知道病毒原理的可能就更少,蠕虫病毒可能是大家知道得最早的电脑病毒。但其实电脑病毒在此之前已经经过了一个漫长的“进化”过程。
早在1949年,距离第一部商用电脑的出现还有好几年时,电脑的先驱者约翰·范纽曼──(John Von Neumann)在他的一篇论文《复杂自动装置的理论及组织的进行》里,即已把病毒程序的蓝图勾勒出来。当时,绝大部分的电脑专家都无法想象这种会自我繁殖的程序是可能的,只有少数几个科学家默默地研究范纽曼所提出的概念。直到十年之后,在美国电话电报公司(AT&T)的贝尔(Bell)实验室中,这些概念在一种很奇怪的电子游戏中成形了。这种电子游戏叫做“磁芯大战”(core war),这是由当时贝尔实验室中三个年轻程序人员在业余想出来的,他们是道格拉斯·麦克利(H.Douglas Mcllroy)、维克特·维索斯基(Victor Vysottsky)以及罗伯特·莫里斯(Robert T.Morris),当时他们的年纪都只有二十多岁。磁芯大战的玩法是游戏双方各写一套程序,输入同一部电脑中,这两套程序在电脑的记忆系统内互相追杀,有时它们会设下一些关卡,有时会停下来自行修理(重新写)被对方破坏的几行指令;当它被困时,也可以把自己复制一次,逃离险境。因为它们都在电脑的记忆磁芯中游走,因此得到了磁芯大战之名。
1983年,这项规定被打破了。科恩·汤普逊(Ken Thompson)是当年一项杰出电脑奖得奖人,在颁奖典礼上,他作了一个演讲,不但公开证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程序。他的同行全都吓坏了,然而这个秘密已经流传出去了。1984年,情况愈复杂了,这一年,《科学美国人》月刊(Scientific American)的专栏作家杜特尼(A.K.Dewdney)在5月刊号写了第一篇讨论“磁芯大战”的文章,并且只要寄上两块美金,任何读者都可以收到有关写程序的纲领,在自己家的电脑中开辟战场。
在1985年3月份的《科学美国人》里,杜特尼再次讨论“磁芯大战”和病毒。在文章的开头他便说:“当去年5月有关‘磁芯大战’的文章印出来时,我并没有想过我所谈论的是那么严重的题目……”文中第一次提到“病毒”这个名称。他提到说,意大利的电脑程序员利用感染磁碟的方式使其它电脑受到破坏性程序的感染。
就这样,潘多拉之盒被打开了,许多程序员都了解了病毒的原理,进而开始尝试编制这种具有隐蔽性、攻击性和传染性的特殊程序。病毒从隐秘走向公开,先是利用磁碟,然后是利用网络,迅速在全世界范围内扩散开来,成为电脑用户的头号敌人。
这个游戏的特点,在于双方的程序进入电脑之后,玩游戏的人只能看着屏幕上显示的战况,而不能做任何更改,一直到某一方的程序被另一方的程序完全“吃掉”为止。
用于磁芯大战的游戏有多种,例如有个叫爬行者的程序(Creeper),每一次执行都会自动生成一个副本,很快电脑中原有资料就会被这些爬行者侵蚀掉;“侏儒”(Dwarf)程序在记忆系统中行进,每到第五个“地址”(address)便把那里所储存的东西变为零,这会使原本的程序严重破坏;最奇特的就是一个叫“印普”(Imp)的战争程序了,它只有一行指令,那就是“MOV 01”,其中MOV是“Move”的简写,即移动的意思。它把身处的地址中所载的“0”写(移)到下一个地址中,当“印普”展开行动之后,电脑中原有的每一行指令都被改为“MOV 01”,换句话说,荧光屏上留下一大堆“MOV 01”。