warplane

全世界十大顶级战机排行

第一名:F-22“猛禽”战机

F-22是世界上致命打击性能最好的战斗机,是美国空军的最重要机种,F-22“猛禽”是一款第五代战斗机,以其高机动性、传感器融合性、超音速巡航和致命攻击能力成为了世界上最顶级战机。F-22“猛禽”是一种由美国洛克希德·马丁、波音和通用动力等公司联合为美国空军设计的重型隐身战斗机,主要任务是取得并确保战区的制空权。目前唯一现役 的第五代战斗机。

1

第二名:俄罗斯第五代战机T-50

俄罗斯第五代战机T-50为单座双发重型战机,具备隐身性能好、起降距离短、超机动性能、超音速巡航等特点。其超音速巡航速度可达每小时1450千米,作战半径1100千米,战斗负荷可达6吨,内置3个武器舱,能实现飞行性能和隐身性能的良好结合。

2

第三名:F-35战机

F-35“闪电II”是一款由美国洛克希德·马丁公司设计生产的单座单发动机多用途战机,能够负担近空支援、F-35闪电II(19张)目标轰炸、防空截击等多种任务。

美国的F-35“闪电2”有“史上最昂贵战斗机”之称。美军的“通用低成本轻型战斗机”和“联合先进攻击技术”的新战机理念在洛·马-诺·格公司联合研制 的X-35上初现,美军便选中它并命名为F-35联合打击战斗机(JSF)。

3

第四名:苏-30/35战机

苏-35是第4.5代重型战机,具有远程,多用途,空优和打击等特性。

和苏-30有同样血统设计,有相似性能特征和零件;也可说是苏-30的一种特制版。更助长了苏-35BM型的研发。目前苏-35只有少量的五架服役于俄罗斯空军。苏-35/苏恺35 (北约代号:Flanker-E))是第4.5代重型战机,具有远程,多用途,空优和打击等特性。

4

第五名:F/A-18“大黄蜂”战机

F/A-18“大黄蜂”战机是一种具备最好气动性能和大攻角能力的多用途战术飞机,被誉为“美国尊严守护者”。这架战机率先使用数字复用航空总线和多功能显示器,可使飞行员在瞬息万变的战斗环境中更加灵活的执行动作。

5

第六名:“阵风”战机

“阵风”战机具备众所周知的空对空战斗能力,是一种占尽空中优势的战斗机。

“阵风”战机由法国军机、商务机生产商达索(Dassault)飞机公司设计开发。

这款飞机支持“光谱”电子战系统,可抵御地面和空中的威胁。

6

第七名:“鹰狮”战斗机

“鹰狮”战斗机具有八个可装载导弹和炸弹的挂载点,是一种轻型战机,以其鸭式三角翼设计和高机动性着称。这架战机支持一个复杂的PS-05A型脉冲多普勒X射线雷达,可以侦测120公里外的目标。“鹰狮”也可以通过发射空空导弹进行超视距攻击。JAS-39“鹰狮”是瑞典萨伯公司研制的单座全天候全高度战斗/攻击/侦察机,用以在90年代取代瑞典空军的Saab-37“雷”式战斗机。

7

第八名:台风战斗机

台风战斗机是欧洲战斗机公司(英、德、意和西班牙4国合作)研制的新型单(双)座双发超音速战斗机,主要用于防空和空中优势任务,兼具对地攻击能力。1984年德、英、法、意和西班牙五团达成协议、提出“欧洲战斗机”计划(EFA),中途法国退出。事过10年,1994年3月27日,英、德、意和西班牙四国联合研制的 EF2000战斗机原型机实现了第—次试—览。

8

第九名:米格-35战机

米格-35是一款4++代喷气式战斗机,因其独特的光学定位系统而着称;该系统可使飞机减少对地面控制截击系统(GCI)的依赖,可帮助其独立进行多角色任务。在飞机每个翼尖上都安装有激光发射探测器(LED),可帮助战机侦测即将到来的危险,并且可通过红外线波段抵消危险。

9

第十名:歼-10战机

歼-10战机有一个更出名的名字叫“大力龙”,它由成都飞机工业公司为中国人民解放军空军设计研发,是一种全天候多用途战斗机。歼-10的11外部挂载点 至少能够携带6000千克武器,而且在进气口左舷下装备有23毫米双管机关炮。成飞设计的这款飞机用于执行空对地和空对空的双重任务。

10

2019-games-xbox

2019年最好的Xbox One游戏推荐

微软最近对Xbox产品线进行了重大更新,分别以Xbox One XXbox One S的形式推出两个新型号,其中前者是你现在可以买到的最强的家用游戏机。

如果你正在考虑选择其中一台游戏机,但不确定到底要哪一个,请查看我们的家用游戏机购买指南。对于那些已经拥有Xbox的游戏玩家,我们精心制作了这份最好的游戏列表,随着未来伟大的新游戏发布,这份列表将会定期保持更新。

image.png

传送门

network-security-industry-analyze

2019中国信息安全自主可控行业政策盘点及网络安全行业分析

中国作为一个崛起中的大国,国家安全至关重要。新一届中央高度重视信息安全自主可控的发展,重大会议以及演讲中多次强调网络安全问题。信息安全部署是国家重要战略,中兴、华为断供事件,无异于一场涅槃之火,互联网核心技术是我们最大的“命门”,核心技术受制于人是我们最大的隐患。棱镜门、信息泄露等安全事故的频发,网络安全环境日益复杂,没有网络安全就没有国家安全。

近年来我国不断完善立法,坚定不移的按照“国家主导、体系筹划、自主可控、跨越发展”的方针,在维护国家网络空间安全方面解决关键技术和设备上受制于人的问题,保障网络信息安全机制。本文将从国家信息安全政策及法规、中国网络安全行业分类以及网络安全发展现状等方面介绍2019中国信息安全自主可控行业概况。

一、盘点中国信息安全自主可控行业政策法规

image.png

2019年12月1日,等保2.0标准将正式实施,覆盖全社会各地区、各单位、各部门、各机构,涉及网络、信息系统、云平台、物联网、工控系统、大数据、移动互联等各类技术应用和场景。等保2.0控制措施对安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心提出技术要求;对安全管理制度、安全管理机构、安全管理人员、安全建设管理、安全运维管理提出管理要求。对比等保1.0标准重点提出安全管理中心技术要求,具体包括系统管理、审计管理、集中管控、安全管理平台等,并明确要求对网络中的链路、安全设备、服务器、交换机等运营情况进行集中监测,对审计数据进行集中分析。

2.0标准让很多机构对等级保护建设工作一筹莫展,怎样的网络信息安全建设方案是各机构最好选择?一方面,机构都面临业务不断扩展、安全设备持续增加、运维人员有限等困难,选择简单有效、扩展性强、可开发的等级保护建设方案很重要。另一方面,云环境中网络虚拟化已成为信息技术演进的重要方向,虚拟化条件下的网络既面临传统网络中已存在的安全问题,也有引入虚拟化特性之后出现的一系列新的安全威胁,包括物理网络威胁、虚拟局域网威胁和虚拟网络威胁等。采用统一的安全管理平台,管理各种安全功能组件,针对网络安全风险,及时响应安全防护对策,开展安全运维十分重要。而等保2.0合规仅仅是基础,选择有效地检测并阻止安全威胁、可扩展并降低IT业务创新过程中的各种风险的网络安全管理方案,才能满足机构后续业务发展的各种安全需求,具备相应的安全能力,实现安全资源的弹性扩展和灵活调度,这也是机构进行网络安全防护的前提和关键。

image.png

随着等保2.0的正式发布,中国网络安全行业再次得到政策助推,进入快速上升轨道。当前网络安全的基础性、全局性问题已经充分呈现,未来五年,中国网络安全市场创新进入高峰阶段。

中国网络安全行业整体可划分为产品与服务两方面,下文将为大家呈现网络安全行业产品划分。

二、中国网络安全行业产品分类

image.png

数字经济迅猛发展,安全管理、网络管理、端点安全、安全开发、安全网关、应用安全、数据安全、身份与访问安全、安全业务是我国信息系统自主可控发展不可或缺的核心产品分类。

据中国互联网络信息中心(CNNIC)发布第44次《中国互联网络发展状况统计报告》显示,截止2019年6月,中国网民规模达8.54亿,互联网普及率达61.2%,占全球网民总数的五分之一,中国已成为名副其实的网络大国,而西方利用其高新技术对我实施的打压从未停止,我国的信息安全自主可控事业的起步,伴随着西方发达国家的技术封锁,但中华民族为了实现国家富强民族复兴而进行的技术探索绝不会止步。

三、国产化信息技术网络安全自主可控行业现状深度剖析
1、贸易战凸显我国信息技术网络安全自主可控核心问题关键点
在贸易摩擦纷争频现的大背景下,信息行业国产化及网络安全自主可控的需求鲜明凸显,自主可控是基础,是国产化信息技术网络安全的必要条件。自主可控的本质是打破国外公司在互联网架构上的垄断,防范软硬件设施存在影响我国网络安全的后门和漏洞。国与国之间都存在着不可逾越的“信任界线”,国家的高度重视必然推动国产化的信息技术和信息安全大幅增长和发展,这是机遇也是挑战。但我国信息技术产业核心软硬件产品受制于人的矛盾尖锐,棱镜门事件、中兴、华为断供事件影响恶劣且深远,扭转信息技术长期受制于人的格局,才能从根本解决国家信息安全的核心问题。

国内众多企业积极探索自主可控、网络安全的国产化软硬件,自主可控是一项系统工程,必须要有系统的思维来引导和设计生态。以中国电子、中电通信、航天科工为代表的国内央企集团已经能够提供完整的生态体系,能够提供从芯片、整机、网络设备到操作系统和系统集成全套的产品与服务。其中,航天科工建设的商密网已有两万余人使用。作为自主可控系统集成单位,有大格局,在处理器、操作系统、数据库等品牌众多的情况下,能以合作共赢为重,综合考虑生态建设的系统性、全局性、完整性和竞争性,构建可持续发展的生态体系,才能真正推动国内国产化替代工程的实施。

2、基于自主可控技术国产化替代框架进度及主流品牌分析
(1)自主可控基础硬件受益于国家重大专项资金推动,成果显著

近年来,处理器、交换芯片、显示芯片等国产芯片产品已接近国外主流产品水平。中国CPU产品技术研发已进入多技术路线同步推进的高速发展阶段。国产处理器形成了以X86、MIPS、SPARC、ARM、ALPHA等架构为代表的系列化处理器产品,产品主频普遍为1.0GHz-1.5GHz。国产 CPU 技术正大步迈向新的阶段,美“芯”封喉的局面将得到极大扭转,为构建安全、自主、可控的国产化信息系统奠定了基础。基于国产CPU的整机及网络设备产品已经完全具备替代国外同类产品的能力,产品系列覆盖计算基础设施、信息安全、网络安全需求,具备系统性应用的条件。

image.png

(2)自主可控基础软件突破微软生态,基本已达国际水平

国产操作系统技术趋于成熟,中标麒麟、红旗Linux系统具有较高的实用性、稳定性和安全可控性。已覆盖服务器、桌面、移动和嵌入式等领域,产品大多采用开源技术。在系统的功能、性能,以及对设备、应用软件的支持方面也能满足用户的使用要求,可支持多种国产化处理器(方舟、龙芯等)架构,满足当前国产化的应用需求。国内多家自主知识产权的国产数据库(人大金仓、神州通用等)与国产处理器、操作系统可深入融合适配,支持商业化部署、容灾工具使用。如华为与神州信息共同发布的金融行业联合解决方案,依托华为公司TaiShan服务器以及Gauss数据库,实现神州信息的核心业务系统、数据平台、支付平台向华为的基础设施迁移。这套高度国产化(至CPU、数据库层面)的系统在性能上已经具备替代现有非底层国产化方案的能力,该案例为金融业IT解决方案提供了一套具备强竞争能力的高度国产化解决方案,十分具有里程碑式意义。国产中间件也已具备替代国外产品的能力,基于Java国际标准支持,国产中间件(东方通、金蝶等)与国产操作系统、数据库的兼容适配成效显著,并可实现深度定制化开发与优化。国产基础办公软件也已实现与国产操作系统的适配,对嵌入浏览器的支持、开发接口、界面风格、与office的兼容方面表现优越。

image.png

(3)自主可控应用软件在高精尖技术及实时性高要求领域得到应用

自主可控应用软件,已初步形成在国产化平台运行的办公自动化、企业管理、行业应用系统,部分产品在自主可控计算机示范应用工程中完成了迁移适配,可运行于主流自主可控平台,并已在通信、军事、航空、航天、政府等高精尖技术及实时性高要求的领域得到应用。

(4)自主可控网络安全管理领域成长机遇最大

国产基础软硬件迅速发展的过程中,也伴生了很多的问题,一方面,我国基础软硬件的体系复杂,相互之间的结合比较密切,含关键技术多;另一方面,国内现阶段处于去IOE过渡期,安全管理平台面临的重点问题在于既要适应所有的操作系统,如Windows、Linux、Unix、中标麒麟、红旗Linux等,还需同时监控众多网络设备生产厂商的产品和数据库、中间件应用服务等等。除此之外,我国网络设备部署越来越多,安全管理平台需求高速增长,安全管理平台要从整体上、系统化的帮助企业感知安全威胁,等保2.0控制措施对网络安全管理中心重点提出技术要求,赋能行业巨大的增长机遇。所以,对国内安全管理平台发展视角下的公司研究就非常有必要:

全面型企业:启明星辰、绿盟科技、蓝盾股份、奇安信(原360ESG)、天融信(南洋股份子公司)等企业,具备较为齐全的安全产品线,可依靠自有品牌产品对客户进行解决方案层面的构建,满足用户的整体安全需求。这些企业具备多元化的核心能力,包括网关能力、攻防能力、安全态势感知能力、安全运维能力等。

启明星辰:国内极具实力的网络安全综合解决方案提供商

拥有完全自主知识产权的网络安全产品、可信安全管理平台、安全服务与解决方案的综合提供商。国内入侵检测/入侵防御、统一威胁管理、安全管理平台、运维安全审计、数据审计与防护市场占有率第一位。

绿盟科技:强大自主开发防火墙

基于多年的安全攻防研究,绿盟科技在检测防御类、安全评估类、安全平台类、远程安全运维服务、安全SaaS服务等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估、Web安全防护等产品以及安全运营等专业安全服务。

蓝盾股份:聚焦安全产品、安全运营、安全集成、安全服务

蓝盾股份前身为广东天海威数码技术有限公司,聚焦安全产品、安全运营、安全集成、安全服务。

奇安信:国内网络安全领域中成长最快的企业

为政府、企业,教育、金融等机构和组织提供企业级网络安全技术、产品和服务的网络安全公司,相关产品和服务已覆盖90%以上的中央政府部门、中央企业和大型银行,已在印度尼西亚、新加坡、加拿大、中国香港等国家和地区开展了安全业务。

天融信:中国领先的网络安全、大数据与安全云服务提供商

基于创新的 “可信网络架构”以及业界领先的信息安全产品与服务,天融信致力于改善用户网络与应用的可视性、可用性、可控性和安全性,降低安全风险,创造业务价值。

专精型企业:除网关外的细分市场优质企业,包括北信源、智和信通、可信华泰、安恒信息、东软、格尔软件、卫士通、数字认证、中孚信息、恒安嘉新、安博通等,这些企业在细分领域均有明确的优势。这其中又可细分为完全兼容国产处理器、服务器、操作系统、数据库的专精型产品,包括智和网管平台SugarNMS、景云网络防病毒系统、北信源主机审计与监控系统、北信源身份鉴别系统等。

北信源:聚焦终端安全

北信源布局国产自主可控,终端信息安全市场。北信源主机审计与监控系统、北信源身份鉴别系统以及北信源旗下景云网络防病毒系统分别入选第一期国产化信息产品《适配名录》,主机安全产品线已经覆盖国产化、虚拟化、移动、工控等终端类型。

智和信通:首创开放式网管平台

北京智和信通公司专注网络管理运维、IT综合监控、网络管理平台、国产化安全软件、安全管控平台,智和网管平台SugarNMS采用“监控+展示+安管+开发”四合一平台模式,支持国产化平台,支持二次开发定制,具有可持续的功能扩展和开发集成能力,在军工集团科研院所、党政军、电信、金融、教育、医疗及企业中广泛应用。

可信华泰:计算产品整体解决方案提供商

北京可信华泰公司专注应用安全前沿趋势的研究和分析,安全产品包括可信软件、可信安全管理中心、可信支撑平台、可信移动终端、“白细胞”操作系统免疫平台等,满足各类型重要信息系统的计算环境的安全需求。

安恒信息:聚焦应用安全

安恒信息提供应用安全、数据库安全、网站安全监测、安全管理平台等整体解决方案,公司的产品及服务涉及应用安全、大数据安全、云安全、物联网安全、工业控制安全、工业互联网安全等领域。

东软:提供IT驱动的创新型解决方案与服务

东软提供应用开发和维护、ERP实施与咨询服务、专业测试及性能工程服务、软件全球化与本地化服务、IT基础设施服务、业务流程外包(BPO)、IT教育培训等。其安全管理平台将目前信息系统中各类数据孤立分析的形态转变为智能的关联分析,并借助平台实现技术人员(维护人员、应急小组)、操作过程(相应的管理制度和事件处理流程)和技术三者的融合。

格尔软件:加密认证全系列信息安全产品

中国较早研制和推出公钥基础设施PKI平台的厂商之一,是国内首批商用密码产品定点生产与销售单位之一。拥有全系列信息安全产品、安全服务和解决方案的提供能力。产品包括安全认证网关、可信边界安全网关、无线安全网关、电子签章系统、安全电子邮件系统、安全即时通系统、网络保险箱、终端保密系统、签名验证服务系统、局域网接入认证系统、打印管控系统、移动安全管理平台、云安全服务平台系统、移动介质管理系统等产品。

卫士通:聚焦加密及认证

成都卫士通为党政军用户、企业级用户和消费者提供专业自主的网络信息安全解决方案、产品和服务。公司致力于信息安全领域的技术研究和产品开发,从密码技术应用持续拓展,已形成密码产品、信息安全产品、安全信息系统三大信息安全产品体系。

数字认证:聚焦加密及认证

数字认证为用户提供涵盖电子认证服务和电子认证产品的整体解决方案。建立起覆盖全国的电子认证服务网络和较完善的电子认证产品体系。应用领域覆盖政府、金融、医疗卫生、彩票、电信等市场,在电子政务领域的市场占有率位居行业前列,并已在医疗信息化、网上保险、互联网彩票等重点新兴应用领域建立了市场领先优势。

中孚信息:聚焦加密和认证

中孚信息专业从事信息安全技术与产品研发、销售并提供行业解决方案和安全服务的高新技术企业。是国家商用密码产品定点生产和销售单位。公司拥有国家保密局颁发的国家涉密集成甲级****,具有工信部办法的信息系统集成资质。

恒安嘉新:聚焦网络空间安全综合治理

恒安嘉新专注于网络空间安全综合治理领域。主要采取直销模式向电信运营商、安全主管部门等政企客户提供服务。产品包括网络空间安全综合管理产品、移动互联网增值产品、通信网网络优化产品等。

安博通:网络安全系统平台和安全服务提供商

北京安博通是国内领先的网络安全系统平台和安全服务提供商。依托自主开发的应用层可视化安全网络安全技术,围绕核心ABT SPOS网络安全系统平台,为业界众多安全产品提供操作系统、业务组件、分析引擎、关键算法、特征库升级等软件支撑及相关的技术服务。

网关型企业:国产化进程阶段优先受益的分类,基础产品为主,产品线和技术能力聚焦边界防护、以各类网关为主体,包括华为、深信服、新华三、山石网科等。

华为:民族品牌 国之骄傲

全球领先的ICT(信息与通信)基础设施和智能终端提供商,在通信网络、IT、智能终端和云服务等领域为客户提供有竞争力、安全可信赖的产品、解决方案与服务,与生态伙伴开放合作。2018年销售收入7212亿RMB,净利润593亿RMB,经营活动现金流747亿RMB。

深信服:让IT更简单、更安全、更有价值

是一家专注于企业级安全、云计算及IT基础设施的产品和服务供应商,拥有智安全、云计算和新IT三大业务品牌,致力于让用户的IT更简单、更安全、更有价值。

新华三:融绘数字未来,共享美好生活

是业界领先的数字化解决方案领导者,致力于成为客户业务创新、产业升级可信赖的合作伙伴。拥有全系列服务器、存储、网络、安全、超融合系统和IT管理系统等产品,能够提供云计算、大数据、大互联、大安全和IT咨询与服务在内的数字化解决方案和产品的研发、生产、咨询、销售及服务。

山石网科:创新网络安全

专注于网络安全领域的前沿技术创新,为企业级和运营商用户提供智能化、高性能、高可靠、简单易用的网络安全解决方案。Hillstone以网络安全的需求变化为创新基点,立志为全球用户打造安全的网络环境,成为世界第一流的安全厂商。

国家多重利好政策下,国产信息化品牌迎来黄金时代。党政军、金融、电信、能源等中国重点领域及企业重新选择软硬件合作伙伴。

3、党政军领域国产化自主可控是必要条件
中央军委印发《关于进一步加强军队信息安全工作的意见》,要求必须把信息安全工作作为网络强军的重要任务和军事斗争准备的保底工程,推进信息安全集中统管,构建与国家信息安全体系相衔接、与军事斗争准备要求相适应的军队信息安全防护体系。要全面推开信息安全等级保护和风险评估,规范信息安全建设和管理;强力推进国产自主化建设应用,夯实信息安全根基;创新发展信息安全技术防护体系,有效提升信息安全综合防御能力;扎实抓好信息安全防护力量建设,为信息安全建设管理提供人才支撑;坚决维护网上意识形态安全,严厉打击网上涉军违法犯罪活动;严格实施信息安全综合管控,确保重要人员、核心数据和关键设备安全;建立健全信息安全工作机制,形成齐抓共管、健康有序的工作局面。

综上所述,我国自主可控的发展,必将先从党政军领域开始。2017年-2020年,国家党政军队部门全面推行国产化方案,国产化信息安全自主可控行业年市场需求每年高达320亿元,如果实行党政军全替换国产化,需求将达每年504亿元。央企重点行业五年内替换比例将从早期的10%逐步增值到70%,自主可控整机将产生约300亿的市场需求,国产芯片市场空间近60亿元。金融领域5年内整机市场规模将达到185亿元,国产CPU市场空间近35亿元。

image.png

国产软硬件担负了“安全可控”的责任,让有网无防,有防不强的问题逐步解决。基础设施完成替换的同时,如智和网管平台SugarNMS、景云网络防病毒系统、北信源主机审计与监控系统、北信源身份鉴别系统等完全兼容国产处理器、服务器、操作系统、数据库的专精型产品也将迎来巨大的市场空间。

4、国产化市场前景广阔 2020年国产化扩展至重点行业及民用领域
从市场角度看,国产自主可控软硬件并未有“市场可控”的生存条件。但国产化软硬件发展是大势所趋,如何布局是每个中国企业必须要考虑的现实问题。国产化软硬件成熟是本源,网络安全管理实现安全资源的弹性扩展和灵活调度是关键,满足企业后续业务长期发展的各类安全需求是发展之道。

华为的胜利,究其根本是企业家精神的胜利。中兴通讯的战略风险,绝不是一时之事,为何没有及早调整?一方面是公司高层决策缺乏安全监管机制,只求业绩发展,缺乏国家高度企业安全的长久战略考量。另一方面,早期国家网络安全审查机制不完善,一年进口芯片达2000多亿美元,网络安全隐患如何预防。无论国企、民企,缺乏真正为企业负责、为国家负责、为民族负责的企业家精神都难以长久发展。

我国加快核心技术攻研,推进网络安全自主可控,国产化采购是必然,2020年后国产化方案逐步向重点行业、民用领域扩展,国产自主可控系统市场空间可期。相信国家也会采取多种激励和支持措施加速去IOT进程。党政军民凝心聚力,共同攻坚克难,不忘初心,牢记使命,必将打赢网络强国之战,在新时代创造中华民族新的伟大奇迹!

*本文作者:蔚颖willing,来自FreeBuf.COM

Computer-network-books

网络安全从业者书单推荐

一、计算机及系统原理

《编码:隐匿在计算机软硬件背后的语言》

作者:(美国)Charles Petzold

《深入理解计算机系统》

作者:(美国)Randal E. Bryant

《深入解析windows操作系统》

作者:(美国)Mark E .Russinovich ,David A.Solomon

《Linux内核设计与实现》

作者:(美国)Robert Love

《深入理解android内核设计思想》

作者:林学森

《Android系统源代码情景分析》

作者:罗升阳

《深入解析Mac OS X & iOS操作系统》

作者:(美国)Jonathan Levin

《深入理解LINUX内核》

作者:(美国)Daniel P.Bovet

《代码揭秘:从C/C++的角度探秘计算机系统》

作者:左飞

《Android Dalvik虚拟机结构及机制剖析》(共2卷)

作者:吴艳霞,张国印

《最强Android书:架构大剖析》

作者:(美国)Jonathan Levin

二、编程开发

1、系统平台

(1)Windows

《Windows程序设计》

作者:(美国)Charles Petzold

《Windows核心编程》

作者:(美国)Jeffrey Richter

《Windows环境下32位汇编语言程序设计》

作者:罗云彬

《Windows驱动开发技术详解》

作者:张帆,史彩成

(2)Linux / Unix

《UNIX环境高级编程》

作者:(美国)W.Richard Stevens

《Linux程序设计》

作者:(美国)Nell Matthew,Richard Stones

《鸟哥的Linux私房菜》

作者:鸟哥(蔡德明)

《Linux设备驱动程序》

作者:(美国)Jonahan Corbet

(3)Mac OS X / iOS

《iOS编程》

作者:(美国)Joe Conway,Aaron Hillegass

《OS X与iOS内核编程》

作者:(澳大利亚)Ole Henry Halvorsen,Douglas Clarke

(4)Android

《第一行代码 Android》

作者:郭霖

《Android编程权威指南》

作者:(美国)Bill Phillips,Brian Hardy

2、编程语言

(1)C

《C程序设计语言》

作者:(美国)Brian W. Kernighan,Dennis M. Ritchie

《C Primer Plus》

作者:(美国)Stephen Prata

《C和指针》

作者:(美国)Kenneth A.Reek

《C陷阱与缺陷》

作者:(美国)Andrew Koenig

《C专家编程》

作者:(美国)Perter VanDer Linden

(2)C++

《C++ Primer Plus》

作者:(美国)Stephen Prata

《C++ Primer》

作者:(美国)Stanley B. Lippman,Josée LaJoie,Barbara E. Moo

(3)ASM

《Intel 汇编语言程序设计》

作者:(美国)Kip R.Irvine

《Intel 开发手册》

(4)JAVA

《JAVA核心技术》

作者:(美国)Cay S. Horstmann

《Java编程思想》

作者:(美国)Bruce Eckel

(5)JavaScript

《JavaScript DOM编程艺术》

作者:(英国)Jeremy Keith,(加拿大)Jeffrey Sambells

《JavaScript高级程序设计》

作者:(美国)Nicholas C.Zakas

(6)Python

《Python核心编程》

作者:(美国)Wesley Chun

(7)Shell

《Linux Shell脚本攻略》

作者:(印度)Sarath Lakshman

3、调试技术

《软件调试》

作者:张银奎

《Debug Hacks》

作者:(日本)吉冈弘隆,大和一洋,大岩尚宏,安部东洋,吉田俊辅

《格蠹汇编:软件调试案例集锦》

作者:张银奎

4、数据结构与算法

《数据结构与算法分析:C语言描述》

作者:(美国)Mark Allen Weiss

《算法导论》

作者:(美国)Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest

5、编译原理

《编译系统透视:图解编译原理》

作者:新设计团队

《编译原理》

作者:(美国)Alfred V.Aho,Monica S.Lam,Ravi Sethi,Jeffrey D.Ullman

6、其他

《编程高手箴言》

作者:梁肇新

《代码整洁之道》

作者:(美国)Robert C.Martin

《代码大全》

作者:(美国)Steve McConnell

三、网络技术

《TCP/IP详解 卷1:协议》

作者:(美国)Kevin R. Fall,W.Richard Stevens

《Wireshark数据包分析实战》

作者:(美国)Chris Sanders

四、安全技术

1、安全开发

《天书夜读:从汇编语言到Windows内核编程》

作者:谭文,邵坚磊

《Rootkit:系统灰色地带的潜伏者》

作者:(美国)Bill Blunden

《Rootkits——Windows内核的安全防护》

作者:(美国)Greg Hoglund,James Butler

《BSD ROOTKIT 设计–内核黑客指引书》

作者:(美国)Joseph Kong

《寒江独钓:Windows内核安全编程》

作者:谭文,杨潇,邵坚磊

2、逆向工程

《加密与解密》

作者:段钢

《恶意软件分析诀窍与工具箱——对抗“流氓”软件的技术与利器》

作者:(美国)Michael.Hale.Ligh,Steven Adair

《C++反汇编与逆向分析技术揭秘》

作者:钱林松,赵海旭

《IDA Pro权威指南》

作者:(美国)Chris Eagle

《逆向工程权威指南》

作者:(乌克兰)Dennis Yurichev

《Android软件安全与逆向分析》

作者:丰生强

《macOS软件安全与逆向分析》

作者:丰生强、 邢俊杰

《iOS应用逆向工程(第2版)》

作者:沙梓社,吴航

3、Web安全

《黑客攻防技术宝典:Web实战篇》

作者:(美国)Dafydd Stuttard,Marcus Pinto

《白帽子讲Web安全》

作者:吴翰清

《Web安全测试》

作者:(美国)Paco Hope,Ben Waltller

《Web前端黑客技术揭秘》

作者:钟晨鸣,徐少培

《精通脚本黑客》

作者:曾云好

4、软件 / 系统安全

《0day安全:软件漏洞分析技术》

作者:王清

《漏洞战争:软件漏洞分析精要》

作者:林桠泉

《捉虫日记》

作者:(德国)Tobias Klein

《内核漏洞的利用与防范》

作者:(美国)Enrico Perla,Massimiliano Oldani

《Fuzzing for Software Security Testing and Quality Assurance(第二版)》

作者:(美国)Charlie Miller

《iOS Hacker’s Handbook》

作者:(美国)Charlie Miller

《The Mac Hacker’S Handbook》

作者:(美国)Charlie Miller

《Android安全攻防权威指南》

作者:(美国)Joshua J.Drake,(西班牙)Pau Oliva Fora,(美国)Collin Mulliner

《The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities》

作者:(美国)Mark Dowd

《Android安全攻防实战》

作者:(美国)Keith Makan,Scott Alexander-Bown

《模糊测试:强制性安全漏洞发掘》

作者:(美国)Michael Sutton

《Exploit 编写系列教程》

作者:(美国)Corelan Team

《MacOS and iOS Internals, Volume III: Security & Insecurity》

作者:(美国)Jonathan Levin

《灰帽黑客(第4版):正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术》

作者:(美国)Allen Harper,Shon Harris

《威胁建模:设计和交付更安全的软件》

作者:(美国)Adam Shostack

5、无线电安全

《无线电安全攻防大揭秘》

作者:杨卿,黄琳

6、硬件安全

《硬件安全攻防大揭秘》

作者:简云定,杨卿

7、汽车安全

《智能汽车安全攻防大揭秘》

作者:李均,杨卿,曾颖涛,郑玉伟

《汽车黑客大曝光》

作者:(美国)Craig Smith

五、软技能

《软技能:代码之外的生存指南》

作者:(美国)John Sonmez

《程序员健康指南》

作者:(美国)Joe Kutner

《影响力》

作者:(美国)Robert B.Cialdini

《思考,快与慢》

作者:(美国)Daniel Kahneman

《写给大家看的设计书》

作者:(美国)Robin Williams

《听故事,学PPT设计》

作者:杨雪

《横向领导力》

作者:(美国)Roger Fisher,Alan Sharp

《职业情商》

作者:张新越

《程序员的成长课》

作者:安晓辉,周鹏

《高效演讲:斯坦福最受欢迎的沟通课》

作者:(美国)Peter Meyers,Shann Nix

《程序员的英语》

作者:(韩国)朴栽浒,李海永

《少有人走的路》

作者:(美国)斯科特·派克

《异类:不一样的成功启示录》

作者:(加拿大)马尔科姆·格拉德威尔

linux_so

Linux下的静态库、动态库和动态加载库

Linux库类型

Linux下可以创建两种类型的库:

  1. 静态库(.a): 在链接期间被应用程序直接链接进可执行文件

  2. 动态链接库(.so): 动态库还分为两种用法: a) 应用程序运行期间链接动态库,但是在编译期间声明动态库的存在,也就是说这种动态库必须在编译时对编译器可见,但编译器却不将此种库编译进可执行文件; b) 在运行期间,动态加载和卸载的库,使用动态加载方法加载。这种库的形式跟动态链接没有本质区别,区别是在调用时,是由用户程序决定何时链接的,而不是由系统链接器自动链接

命名约定

库需要以lib作为开头,而在指定链接命令行参数时,却无需包含开头和扩展名,例如:

1
gcc src-file.c -lm -lpthread

这个例子中,链接了libmath.alibpthread.a

静态库(.a)

生成静态库的方法如下:

  • 编译object文件。例如:cc -Wall -c ctest1.c ctest2.c,该命令会生成ctest1.o和ctest2.o(其中-Wall表示编译时输出警告)。

  • 创建库文件。例如:ar -cvq libctest.a ctest1.o ctest2.o。该命令会得到一个libctest.a文件

  • 可以通过ar -t查看.a文件中包含哪些.o。所以,实际上ar就是一个打包命令,类似tar

  • 构建符号表。ranlib libctest.a用于为.a创建符号表。有些ar命令实际上已经集成了ranlib的功能

.a文件与windows下的.lib是相同的概念。

动态库(.so)

生成动态库的方法如下:

  • 编译object文件时使用-fPIC选项:
1
gcc -Wall -fPIC -c *.c

这个选项的目的是让编译器生成地址无关(position independent)的代码,这是因为,动态库是在运行期间链接的,变量和函数的偏移量是事先不知道的,需要链接以后根据offset进行地址重定向。

  • 使用-shared链接
    1
    gcc -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0 *.o

-shared选项是让动态库得以在运行期间被动态链接;-Wl,options是设置传递给ld(链接器)的参数,在上面的例子中,当链接器在链接.o时会执行ld -soname ibctest.so.1

  • 创建软链

上面的命令将最终输出一个动态库libctest.so.1.0,而出于习惯,会创建两个软链:

1
2
3
mv libctest.so.1.0 /opt/lib
ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so.1
ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so

libctest.so用于在编译期间使用-lctest让编译器找到动态库,而libctest.so.1用于在运行期间链接

1
gcc -Wall -I/path/to/include-files -L/path/to/libraries prog.c -lctest -o prog

查看依赖

使用ldd命令来查看程序对动态库的依赖。例如:

1
2
3
4
5
ldd prog

libctest.so.1 => /opt/lib/libctest.so.1 (0x00002aaaaaaac000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003aa4e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003aa4c00000)

obj文件

obj文件的格式和组成可能是系统差异性的一大体现,比如windows下的PE、linux和一些unix下的elf、macos的mach-o、aix下的xcoff。

查看obj文件的符号表信息,可以通过nm objdump readelf等方法。

运行期间查找动态库

运行期间,系统需要知道到哪里去查找动态库,这是通过/etc/ld.so.conf配置的。ldconfig用于配置运行时动态库查找路径,实际是更新/etc/ld.so.cache。另外一些环境变量也可以影响查找:(Linux/Solaris: LD_LIBRARY_PATH, SGI: LD_LIBRARYN32_PATH, AIX: LIBPATH, Mac OS X: DYLD_LIBRARY_PATH, HP-UX: SHLIB_PATH)

动态加载和卸载的库

需要应用程序希望设计成插件化的架构,这就需要可以动态加载和卸载库的机制。与动态链接不同的是,动态加载的意思是,编译期间可以对动态库的存在一无所知,而是在运行期间通过用户程序尝试加载进来的。

通过dlfcn.h中的dlopendlsymdlclose等函数实现此种功能。

另外,使用到dlfcn机制的可执行文件需要使用-rdynamic选项,它将指示连接器把所有符号(而不仅仅只是程序已使用到的外部符号,但不包括静态符号,比如被static修饰的函数)都添加到动态符号表(即.dynsym表)里。

GNU Libtool

如今许多软件的编译都采用libtool工具,libtool是一个编译链接包装工具,实际只是一个脚本,用libtool编译和链接会产生类似.la的文件,.la这种文件其实是个文本文件,指向.a文件,并声明一些版本信息。

传送门

jna

Java Native Access - JNA

Build Status
Build status

Java Native Access (JNA)

The definitive JNA reference (including an overview and usage details) is in the JavaDoc. Please read the overview. Questions, comments, or exploratory conversations should begin on the mailing list, although you may find it easier to find answers to already-solved problems on StackOverflow.

JNA provides Java programs easy access to native shared libraries without writing anything but Java code - no JNI or native code is required. This functionality is comparable to Windows’ Platform/Invoke and Python’s ctypes.

JNA allows you to call directly into native functions using natural Java method invocation. The Java call looks just like the call does in native code. Most calls require no special handling or configuration; no boilerplate or generated code is required.

JNA uses a small JNI library stub to dynamically invoke native code. The developer uses a Java interface to describe functions and structures in the target native library. This makes it quite easy to take advantage of native platform features without incurring the high overhead of configuring and building JNI code for multiple platforms. Read this more in-depth description.

While significant attention has been paid to performance, correctness and ease of use take priority.

In addition, JNA includes a platform library with many native functions already mapped as well as a set of utility interfaces that simplify native access.

Projects Using JNA

JNA is a mature library with dozens of contributors and hundreds of commercial and non-commercial projects that use it. If you’re using JNA, feel free to tell us about it. Include some details about your company, project name, purpose and size and tell us how you use the library.

Interesting Investigations/Experiments

There are also a number of examples and projects within the contrib directory of the JNA project itself.

Supported Platforms

JNA will build on most linux-like platforms with a reasonable set of GNU tools and a JDK. See the native Makefile for native configurations that have been built and tested. If your platform is supported by libffi, then chances are you can build JNA for it.

Pre-built platform support may be found here.

Download

Version 5.4.0

JNA

Maven Central jna-5.4.0.jar

This is the core artifact of JNA and contains only the binding library and the
core helper classes.

JNA Platform

Maven Central jna-platform-5.4.0.jar

This artifact holds cross-platform mappings and mappings for a number of commonly used platform
functions, including a large number of Win32 mappings as well as a set of utility classes
that simplify native access. The code is tested and the utility interfaces ensure that
native memory management is taken care of correctly.

See PlatformLibrary.md for details.

Features

  • Automatic mapping from Java to native functions, with simple mappings for all primitive data types
  • Runs on most platforms which support Java
  • Automatic conversion between C and Java strings, with customizable encoding/decoding
  • Structure and Union arguments/return values, by reference and by value
  • Function Pointers, (callbacks from native code to Java) as arguments and/or members of a struct
  • Auto-generated Java proxies for native function pointers
  • By-reference (pointer-to-type) arguments
  • Java array and NIO Buffer arguments (primitive types and pointers) as pointer-to-buffer
  • Nested structures and arrays
  • Wide (wchar_t-based) strings
  • Native long support (32- or 64-bit as appropriate)
  • Demo applications/examples
  • Supported on 1.4 or later JVMs, including JavaME (earlier VMs may work with stubbed NIO support)
  • Customizable marshalling/unmarshalling (argument and return value conversions)
  • Customizable mapping from Java method to native function name, and customizable invocation to simulate C preprocessor function macros
  • Support for automatic Windows ASCII/UNICODE function mappings
  • Varargs support
  • Type-safety for native pointers
  • VM crash protection (optional)
  • Optimized direct mapping for high-performance applications.
  • COM support for early and late binding.
  • COM/Typelib java code generator.

Community and Support

All questions should be posted to the jna-users Google group. Issues can be submitted here on Github.

When posting to the mailing list, please include the following:

  • What OS/CPU/architecture you’re using (e.g. Windows 7 64-bit)
  • Reference to your native interface definitions (i.e. C headers), if available
  • The JNA mapping you’re trying to use
  • VM crash logs, if any
  • Example native usage, and your attempted Java usage

It’s nearly impossible to indicate proper Java usage when there’s no native
reference to work from.

For commercial support, please contact twalljava [at] java [dot] net.

Using the Library

Primary Documentation (JavaDoc)

The definitive JNA reference is in the JavaDoc.

Developers

Contributing

You’re encouraged to contribute to JNA. Fork the code from https://github.com/java-native-access/jna and submit pull requests.

For more information on setting up a development environment see Contributing to JNA.

If you are interested in paid support, feel free to say so on the jna-users mailing list. Most simple questions will be answered on the list, but more complicated work, new features or target platforms can be negotiated with any of the JNA developers (this is how several of JNA’s features came into being). You may even encounter other users with the same need and be able to cost share the new development.

License

This library is licensed under the LGPL, version 2.1 or later, and (from version 4.0 onward) the Apache Software License, version 2.0. Commercial license arrangements are negotiable.

NOTE: Oracle is not sponsoring this project, even though the package name (com.sun.jna) might imply otherwise.

C/C++ for VSC

C/C++ for Visual Studio Code

Repository  |  Issues  |  Documentation  |  Code Samples  |  Offline Installers

Badge

This preview release of the C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging.

Overview and getting started

Questions and feedback

FAQs


Check out the FAQs before filing a question.

Provide feedback


File questions, issues, or feature requests for the extension.

Known issues


If someone has already filed an issue that encompasses your feedback, please leave a 👍 or 👎 reaction on the issue to upvote or downvote it to help us prioritize the issue.

Quick survey


Let us know what you think of the extension by taking the quick survey.

Offline installation

The extension has platform-specific binary dependencies, therefore installation via the Marketplace requires an Internet connection in order to download additional dependencies. If you are working on a computer that does not have access to the Internet or is behind a strict firewall, you may need to use our platform-specific packages and install them by running VS Code’s "Install from VSIX..." command. These “offline’ packages are available at: https://github.com/Microsoft/vscode-cpptools/releases.

Package Platform
cpptools-linux.vsix Linux 64-bit
cpptools-linux32.vsix Linux 32-bit
cpptools-osx.vsix macOS
cpptools-win32.vsix Windows 64-bit & 32-bit

Contribution

Contributions are always welcome. Please see our contributing guide for more details.

Microsoft Open Source Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Data and telemetry

This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: "telemetry.enableTelemetry". Read our privacy statement to learn more.

Nobel Prize

诺贝尔奖(以瑞典化学家诺贝尔命名的奖项)

诺贝尔奖(The Nobel Prize),是以瑞典的著名化学家、硝化甘油炸药的发明人阿尔弗雷德·贝恩哈德·诺贝尔(Alfred Bernhard Nobel)的部分遗产(3100万瑞典克朗)作为基金在1895年创立的奖项。 [1-2] 在世界范围内,诺贝尔奖通常被认为是所有颁奖领域内最重要的奖项。 [2-4]

诺贝尔奖最初分设物理(Physics)、化学( [5] Chemistry)、生理学或医学(Physiology or Medicine)、文学(Literature)、和平(Peace)等五个奖项,于1901年首次颁发。 [2] [4] 1968年,瑞典国家银行在成立300周年之际,捐出大额资金给诺贝尔基金,增设“瑞典国家银行纪念诺贝尔经济科学奖”(The Sveriges Riksbank Prize in Economic Sciences in Memory of Alfred Nobel); [6-7] 该奖于1969年首次颁发,人们习惯上称这个额外的奖项为诺贝尔经济学奖。 [6-7]

诺贝尔奖以“诺贝尔奖基金会”每年的利息或投资收益授予世界上在这六个领域对人类做出最重大贡献的人。 [1] 截止至2018年,诺贝尔奖共授予了904位个人和24个团体,这其中4位个人以及1个团体(联合国难民署)曾两次获得诺贝尔奖、1个团体(红十字会)曾三次获得诺贝尔奖,故总计908次授予个人、27次授予团体。 [1-2] 诺贝尔奖包括金质奖章、证书和奖金。 [1-2]

image.png

获奖分布

1
2
3
4
5
6
7
8
9
10
美国327人
英国 98 人
德国 76 人
法国 48 人
瑞典 27人
日本 27人
俄罗斯 19人
瑞士 17人
荷兰 14人
意大利 14人

高校得主

诺贝尔奖自1901年首次颁发,截止至2018年,共授予了904位个人和24个团体,这其中4位个人以及1个团体(联合国难民署)曾两次获得诺贝尔奖、1个团体(红十字会)曾三次获得诺贝尔奖,故总计908次授予个人、27次授予团体。 [2] [4] 每个诺贝尔奖得主(除了文学和和平奖)在获奖时,几乎都在某一所大学或与大学相关的研究机构工作,而诺贝尔奖颁奖委员会也会特别说明该获奖者的工作机构。 [41-42] 各高校诺贝尔奖得主数量,从一定层面上体现出该校的学术实力和在世界学术界的地位。 [4] 据相关资料统计,截止2018 [43] 年10月,按照诺贝尔奖得主数量(校友、教职工以及研究人员),世界前30名高校名单如下:

排名大学名称地区诺贝尔奖人数
1哈佛大学美国158人
2剑桥大学英国117人
3加州大学伯克利分校美国107人
4芝加哥大学美国98人
5哥伦比亚大学美国96人
6麻省理工学院美国93人
7斯坦福大学美国83人
8加州理工学院美国73人
9牛津大学英国69人
10普林斯顿大学美国65人
11耶鲁大学美国61人
12康奈尔大学美国58人
13柏林洪堡大学德国55人
14巴黎大学法国50人
15哥廷根大学德国45人
16慕尼黑大学德国42人
17哥本哈根大学丹麦39人
18(并列)约翰·霍普金斯大学美国37人
18(并列)纽约大学美国37人
20洛克菲勒大学美国36人
21宾夕法尼亚大学美国35人
22伦敦大学学院英国34人
23苏黎世联邦理工学院瑞士32人
24(并列)伊利诺伊大学厄巴纳-香槟分校美国30人
24(并列)明尼苏达大学美国30人
26(并列)加州大学圣地亚哥分校美国27人
26(并列)海德堡大学德国27人
28(并列)曼彻斯特大学英国25人
28(并列)密歇根大学美国25人
28(并列)威斯康星大学麦迪逊分校美国25人

华人得主

中国大陆及中国港澳台地区获得者

  • 2015年 屠呦呦
    北京时间2015年10月5日。2015年诺贝尔生理学或医学奖得主:屠呦呦
    。她多年从事中药和中西药结合研究,突出贡献是创制新型抗疟药-青蒿素和双氢青蒿素。 [46]
    中国药学家屠呦呦2015年10月5日获得了诺贝尔医学奖,成为国内第一个诺贝尔科学类奖项获得者也是第一个获得诺贝尔奖的中国籍女性。 [47] 她也成为第一位获得诺贝尔科学奖项的中国本土科学家、第一位获得诺贝尔生理医学奖的华人科学家。
  • 2010年 刘晓波
    2010年,刘晓波获得挪威诺贝尔和平奖委员会颁发的诺贝尔和平奖,成为首位或第二位(如果算上第十四世达赖喇嘛)获得该奖的中华人民共和国公民 [48-49] 。
  • 2012年 莫言
    北京时间2012年10月11日,瑞典文学院宣布中国作家莫言获得2012年诺贝尔文学奖,获奖理由是:通过幻觉现实主义将民间故事、历史与当代社会融合在一起。 [50-51] 莫言成为第一个获得诺贝尔文学奖的中国籍作家。
  • 1957年李政道与杨振宁
      两人于1957年因提出“宇称不守恒”观念被实验证明而获诺贝尔物理学奖,获奖时均为中华台北籍贯。其中李政道于1962年加入美国国籍。杨振宁1964年2月23日加入美国国籍,2015年4月1日放弃美国国籍,随后加入中华人民共和国国籍。
    2017年初,杨振宁和姚期智两位教授依照《中国科学院章程》和《中国科学院外籍院士转为中国科学院院士暂行办法》由中国科学院外籍院士正式转为中国科学院院士。杨振宁院士加入中国科学院数学物理学部。 [52]
    海外华人获得者

海外华人诺贝尔奖获得者:

  • 丁肇中:1936年生于美国,美籍华人。丁肇中和伯顿·里克特由于1974年发现了J/ψ粒子而同时获得1976年诺贝尔物理学奖,时年40岁。
  • 李远哲:1936年生于台湾,1962年移居美国,1974年加入美国国籍,1986年以分子水平化学反应动力学的研究与赫施巴赫及约翰·波兰伊共获诺贝尔化学奖,时年50岁。1994年放弃美国国籍,返回台湾出任中央研究院院长。
  • 朱棣文:1948年生于美国,祖籍江苏苏州太仓,美籍华人。1997年因“发展了用雷射冷却和捕获原子的方法”获得诺贝尔物理学奖,时年49岁,2008-2012年任美国能源部部长。
  • 崔琦:1939年生于河南平顶山,美籍华人,1998年美国普林斯顿大学的崔琦、哥伦比亚大学的霍斯特·路德维希·施特默及史丹佛大学的劳克林三人因“他们发现了电子量子流体现象,一种新形态的量子流体,其中有带分数电荷的激发态”而获得获1998年诺贝尔物理学奖,时年59岁。
  • 高行健:1948年生于江西,祖籍江苏泰州。1987年移居法国,1997年加入法国国籍。2000年高行健因为作品《灵山》获诺贝尔文学奖,成为第一位获得诺贝尔文学奖的华人作家。
  • 钱永健:1952年出生于美国,祖籍浙江杭州,美籍华人。日裔美国科学家下村修、美国科学家马丁·查尔菲以及美国华裔科学家钱永健因为发现绿色荧光蛋白方面做出突出成就分享2008年诺贝尔化学奖。他是中国导弹之父钱学森的堂侄,美国华裔化学家。
  • 高锟:1933年出生于中国上海金山区,英美双国籍,曾任香港中文大学校长。2009年因在“有关光在纤维中的传输以用于光学通信方面”取得了突破性成就,与发明了半导体成像器件——电荷耦合器件(CCD)图像传感器的韦拉德·博伊尔和乔治·史密斯共同获得2009诺贝尔物理学奖,时年75岁。

历届得主

2012年-今

年份物理学奖化学奖生理学或医学奖文学奖经济学奖和平奖
2012年
塞尔日·阿罗什大卫·维因兰德 莫言 欧洲联盟
2013年 艾丽斯·芒罗
尤金·法玛
拉尔斯·皮·汉森、罗伯特·席勒
禁止化学武器组织
2014年
威廉姆·艾斯科
·莫尔纳尔
帕特里克·莫迪亚诺让·梯若尔
2015年 斯维特拉娜·阿列克谢耶维奇 [14]  安格斯·迪顿 [15]  突尼斯全国对话大会
2016年
[16] 
[17] 
大隅良典 [18]  鲍勃·迪伦 [19]  奥利弗·哈特 胡安·曼努埃尔·桑托斯·卡尔德龙 [21] 
2017年 [22]  杰弗理·霍尔 石黑一雄 [25]  理查德·H·泰勒 [26]  国际废除核武器运动(ICAN) [27] 
2018年阿瑟·阿什金热拉尔·穆鲁唐娜·斯特里克兰 [28]  弗朗西斯·阿诺德乔治·史密斯格雷戈里·温特尔 [29]  詹姆斯·艾利森本庶佑 [30]  奥尔加·托卡尔丘克 [31-32] 
保罗·罗
2019年詹姆斯·皮布尔斯米歇尔·马约尔迪迪埃·奎洛兹 [35]  威廉·凯林彼得·拉特克利夫格雷格·塞门扎 [37]  彼得·汉德克 [32] 

参考资料

  1. Nobel Prize Facts .诺贝尔奖官网[引用日期2019-03-13]
  2. The Nobel Prize .诺贝尔奖官网[引用日期2019-03-13]
  3. Top Award (ShanghaiRanking Academic Excellence Survey 2017) .世界大学学术排名官网[引用日期2017-10-11]
  4. All Nobel Prizes .诺贝尔奖官网[引用日期2016-11-09]
  5. 漫画解读诺贝尔化学奖:达尔文进化论的活学活用!| 直击诺奖 .搜狐[引用日期2019-08-28]
  6. The Sveriges Riksbank Prize in Economic Sciences in Memory of Alfred Nobel .诺贝尔奖官网[引用日期2018-03-30]
  7. All Prizes in Economic Sciences .诺贝尔奖官网[引用日期2018-03-30]
  8. 受性丑闻风波影响 2018年将不颁发诺贝尔文学奖 .海外网[引用日期2018-05-04]
  9. 瑞典因诺奖停颁增设新文学奖 村上春树进候选名单 .网易新闻[引用日期2018-09-05]
  10. 弥天大谎:“96.7%诺贝尔奖获得者信教 .搜狐[引用日期2015-11-24]
  11. 诺贝尔基金会今年提高奖金,授予获奖者约人民币740万元 .澎拜网.2017-09-26[引用日期2017-09-26]
  12. The Nobel Prize in Physics 2015 .NobelPrize.org.2015-10-06[引用日期2015-10-06]
  13. 3名学者获诺贝尔化学奖 .网易[引用日期2015-10-07]
  14. 快讯:斯维特拉娜获2015年诺贝尔文学奖 .中国经济网[引用日期2015-10-08]
  15. 安格斯·迪顿获得2015年诺贝尔经济学奖 .环球网[引用日期2015-10-12]
  16. The 2016 Nobel Prize in Physics .Nobelprize.org.2016.10.04[引用日期2016-10-04]
  17. The 2016 Nobel Prize in Chemistry .Nobelprize.org.2016.10.05[引用日期2016-10-05]
  18. 2016诺贝尔生理学或医学奖揭晓 日本科学家获奖 .凤凰网[引用日期2016-10-03]
  19. The Nobel Prize in Literature 2016 .Nobelprize.org.2016.10.13[引用日期2016-10-14]
  20. The Prize in Economic Sciences 2016 .NobelPrize.org.2016.10.10[引用日期2016-10-10]
  21. The Nobel Peace Prize i2016 .Nobelprize.org..2016.10.07[引用日期2016-10-07]
  22. 三名美国科学家获2017年诺贝尔物理学奖 .网易[引用日期2017-10-03]
  23. 网易首页 > 新闻中心 > 新闻 > 正文 交友 2017年诺贝尔化学奖揭晓 .网易[引用日期2017-10-04]
  24. 2017年诺贝尔生理学或医学奖揭晓 .科学网[引用日期2017-10-02]
  25. 日裔英国籍作家石黑一雄获2017年诺贝尔文学奖 .凤凰网[引用日期2017-10-05]
  26. 美国经济学家理查德·塞勒获得2017年诺贝尔经济学奖 .新华网[引用日期2017-10-09]
  27. 国际废除核武器运动获得2017年诺贝尔和平奖 .新浪[引用日期2017-10-06]
  28. 诺贝尔物理学奖揭晓:美法加三名科学家因激光物理获奖 .澎湃新闻[引用日期2018-10-02]
  29. 快讯!2018年诺贝尔化学奖名单出炉! .环球网[引用日期2018-10-03]
  30. 两位诺奖获得者系免疫学家,盘点近年诺贝尔生理及医学奖获奖者 .荔枝网[引用日期2018-10-02]
  31. 今年将颁发2018年与2019年诺贝尔文学奖 .中国经济网[引用日期2019-09-01]
  32. 刚刚!2018和2019诺贝尔文学奖同时揭晓 .海外网[引用日期2019-10-10]
  33. 2018诺贝尔经济学奖揭晓 两名美国学者获奖 .海外网[引用日期2018-10-08]
  34. 刚国(金)医生及伊拉克女活动家获诺奖和平奖 .新浪[引用日期2018-10-05]
  35. 三名科学家分享2019年诺贝尔物理学奖 .新华网[引用日期2019-10-08]
  36. 三名科学家分享2019年诺贝尔化学奖 .新华网[引用日期2019-10-10]
  37. 快讯!2019诺贝尔生理学或医学奖揭晓 .海外网[引用日期2019-10-07]
  38. 有多少诺贝尔奖获得者不信教? . 生物谷[引用日期2017-04-09]
  39. 世界各国诺贝尔奖获奖人数统计排名 日本位列第8 .新华网.2013年09月30日[引用日期2015-03-20]
  40. 美德三名科学家获2014年诺贝尔化学奖 .新华网.2014-10-08[引用日期2014-10-08]
  41. Nobel Laureates and Research Affiliations .诺贝尔奖官网[引用日期2016-11-29]
  42. Nobel Prize 介绍 .诺贝尔奖官网[引用日期2016-11-29]
  43. 试管中的达尔文进化论!2018诺贝尔化学奖女得主亲自解释获奖的酶定向进化 .新浪[引用日期2019-08-26]
  44. ISRAEL’S TWELVE NOBEL LAUREATES .jpost[引用日期2019-04-22]
  45. 日本人のノーベル赏受赏者一覧 .京都大学(官网)[引用日期2019-04-22]
  46. 祝贺北京大学校友屠呦呦获2015诺贝尔生理医学奖 .北京大学[引用日期2015-10-07]
  47. 中国人终于获得诺贝尔科学奖项了!创造力多重要! .搜狐网[引用日期2015-10-05]
  48. 益多:从达赖到刘晓波获“诺贝尔和平奖”说明了什么 .人民网.2010年10月14日[引用日期2018-09-09]
  49. 刘晓波与诺贝尔和平奖的双重笑料 .人民网.2010年10月22日[引用日期2018-09-09]
  50. 中国作家莫言获2012年诺贝尔文学奖 .新华网[引用日期2014-02-20]
  51. 莫言获得诺贝尔文学奖的现实意义 .五星文库[引用日期2014-02-20]
  52. 对话”杨振宁、姚期智:我为什么放弃外国国籍? .新浪科技.2017-02-21[引用日期2017-02-22]
  53. 快讯!2019诺贝尔化学奖揭晓 .海外网[引用日期2019-10-09]
  54. 最年轻诺贝尔奖获得者25岁!细数诺贝尔奖之最 .21CN新闻网.2007-10-15[引用日期2012-11-05]

exeinfo

nlp

自语言处理然

自语言处理然(英语:Natural Language Processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。

自然语言认知和理解是让计算机把输入的语言变成有意思的符号和关系,然后根据目的再处理。自然语言生成系统则是把计算机数据转化为自然语言。

历史

自然语言处理大体是从1950年代开始,虽然更早期也有作为。1950年,图灵发表论文“计算机器与智能”,提出现在所谓的“图灵测试”作为判断智能的条件。

1954年的乔治城实验涉及全部自动翻译超过60句俄文成为英文。研究人员声称三到五年之内即可解决机器翻译的问题。[1]不过实际进展远低于预期,1966年的ALPAC报告发现十年研究未达预期目标,机器翻译的研究经费遭到大幅削减。一直到1980年代末期,统计机器翻译系统发展出来,机器翻译的研究才得以更上一层楼。

1960年代发展特别成功的NLP系统包括SHRDLU——一个词汇设限、运作于受限如“积木世界”的一种自然语言系统,以及1964-1966年约瑟夫·维森鲍姆模拟“个人中心治疗”而设计的ELIZA——几乎未运用人类思想和感情的消息,有时候却能呈现令人讶异地类似人之间的交互。“病人”提出的问题超出ELIZA 极小的知识范围之时,可能会得到空泛的回答。例如问题是“我的头痛”,回答是“为什么说你头痛?”

1970年代,程序员开始设计“概念本体论”(conceptual ontologies)的程序,将现实世界的信息,架构成计算机能够理解的数据。实例有MARGIE、SAM、PAM、TaleSpin、QUALM、Politics以及Plot Unit。许多聊天机器人在这一时期写成,包括PARRY 、Racter 以及Jabberwacky 。

一直到1980年代,多数自然语言处理系统是以一套复杂、人工订定的规则为基础。不过从1980年代末期开始,语言处理引进了机器学习的算法,NLP产生革新。成因有两个:运算能力稳定增加(参见摩尔定律);以及乔姆斯基 语言学理论渐渐丧失主导(例如转换-生成文法)。该理论的架构不倾向于语料库——机器学习处理语言所用方法的基础。有些最早期使用的机器学习算法,例如决策树,是硬性的、“如果-则”规则组成的系统,类似当时既有的人工订定的规则。不过词性标记将隐马尔可夫模型引入NLP,并且研究日益聚焦于软性的、以几率做决定的统计模型,基础是将输入数据里每一个特性赋予代表其分量的数值。许多语音识别现今依赖的缓存语言模型即是一种统计模型的例子。这种模型通常足以处理非预期的输入数据,尤其是输入有错误(真实世界的数据总免不了),并且在集成到包含多个子任务的较大系统时,结果比较可靠。

许多早期的成功属于机器翻译领域,尤其归功IBM的研究,渐次发展出更复杂的统计模型。这些系统得以利用加拿大和欧盟现有的语料库,因为其法律规定政府的会议必须翻译成所有的官方语言。不过,其他大部分系统必须特别打造自己的语料库,一直到现在这都是限制其成功的一个主要因素,于是大量的研究致力于从有限的数据更有效地学习。

近来的研究更加聚焦于非监督式学习和半监督学习的算法。这种算法,能够从没有人工注解理想答案的数据里学习。大体而言,这种学习比监督学习困难,并且在同量的数据下,通常产生的结果较不准确。不过没有注解的数据量极巨(包含了万维网),弥补了较不准确的缺点。

近年来, 深度学习技巧纷纷出炉[2][3] 在自然语言处理方面获得最尖端的成果,例如语言模型[4]、语法分析[5][6]等等。

自然语言处理的主要范畴

  • 文本朗读(Text to speech)/语音合成(Speech synthesis)
  • 语音识别(Speech recognition)
  • 中文自动分词(Chinese word segmentation)
  • 词性标注(Part-of-speech tagging)
  • 句法分析(Parsing)
  • 自然语言生成(Natural language generation)
  • 文本分类(Text categorization)
  • 信息检索(Information retrieval)
  • 信息抽取(Information extraction)
  • 文字校对(Text-proofing)
  • 问答系统(Question answering)
  • 给一句人类语言的问句,决定其答案。 典型问题有特定答案 (像是加拿大的首都- 叫什么?),但也考虑些开放式问句(像是人生的意义是是什么?)
  • 机器翻译(Machine translation)
  • 将某种人类语言自动翻译至另一种语言
  • 自动摘要(Automatic summarization)
    产生一段文字的大意,通常用于提供已知领域的文章摘要,例如产生报纸上某篇- - 文章之摘要
  • 文字蕴涵(Textual entailment)
  • 命名实体识别(Named entity recognition)

decompilation

可以执行程序反编译为汇编程序

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int f(int a){
if(a==100) return 1;
return 0;
}

int main()
{
printf("Enter a num: ");

int a;
scanf("%d",&a);
printf("num is %d\n", a);
// int code = 100;
if(f(a)){
printf("code is true\n");
}else{
printf("code is false\n");
}
scanf("%s",&a);
return 0;
}

使用x64dbg加载 main.exe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
push ebp
mov ebp,esp
and esp,FFFFFFF0
sub esp,20
call main.401A30
mov dword ptr ss:[esp],main.405064
call <JMP.&printf>
lea eax,dword ptr ss:[esp+1C]
mov dword ptr ss:[esp+4],eax
mov dword ptr ss:[esp],main.405072
call <JMP.&scanf>
mov eax,dword ptr ss:[esp+1C]
mov dword ptr ss:[esp+4],eax
mov dword ptr ss:[esp],main.405075
call <JMP.&printf>
mov eax,dword ptr ss:[esp+1C]
mov dword ptr ss:[esp],eax
call main.401460
test eax,eax
je main.4014D7
mov dword ptr ss:[esp],main.405080
call <JMP.&puts>
jmp main.4014E3
mov dword ptr ss:[esp],main.40508D
call <JMP.&puts>
lea eax,dword ptr ss:[esp+1C]
mov dword ptr ss:[esp+4],eax
mov dword ptr ss:[esp],main.40509B
call <JMP.&scanf>
mov eax,0
leave
ret
nop
nop

assembly language

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
================================================================
MOV - Move:
| Opcode | Instruction | Op/En| 64-Bit Mode| Compat/Leg Mode| Description
| 88 /r REX + 88 /r | MOV r/m8,r8 MOV r/m8***,r8*** | MR MR| Valid Valid| Valid N.E. | Move r8 to r/m8.Move r8 to r/m8.
| 89 /r | MOV r/m16,r16 | MR | Valid | Valid | Move r16 to r/m16.
| 89 /r | MOV r/m32,r32 | MR | Valid | Valid | Move r32 to r/m32.
| REX.W + 89 /r | MOV r/m64,r64 | MR | Valid | N.E. | Move r64 to r/m64.
| 8A /r | MOV r8,r/m8 | RM | Valid | Valid | Move r/m8 to r8.
| REX + 8A /r | MOV r8***,r/m8*** | RM | Valid | N.E. | Move r/m8 to r8.
| 8B /r | MOV r16,r/m16 | RM | Valid | Valid | Move r/m16 to r16.
| 8B /r | MOV r32,r/m32 | RM | Valid | Valid | Move r/m32 to r32.
| REX.W + 8B /r | MOV r64,r/m64 | RM | Valid | N.E. | Move r/m64 to r64.
| 8C /r | MOV r/m16,Sreg** | MR | Valid | Valid | Move segment register to r/m16.
| REX.W + 8C /r | MOV r/m64,Sreg** | MR | Valid | Valid | Move zero extended 16-bit segment register
| | | | | | to r/m64.
| 8E /r | MOV Sreg,r/m16** | RM | Valid | Valid | Move r/m16 to segment register.
| REX.W + 8E /r | MOV Sreg,r/m64** | RM | Valid | Valid | Move lower 16 bits of r/m64 to segment
| | | | | | register.
| A0 | MOV AL,moffs8* | FD | Valid | Valid | Move byte at (seg:offset) to AL.
| REX.W + A0 | MOV AL,moffs8* | FD | Valid | N.E. | Move byte at (offset) to AL.
| A1 | MOV AX,moffs16* | FD | Valid | Valid | Move word at (seg:offset) to AX.
| A1 | MOV EAX,moffs32* | FD | Valid | Valid | Move doubleword at (seg:offset) to EAX.
| REX.W + A1 | MOV RAX,moffs64* | FD | Valid | N.E. | Move quadword at (offset) to RAX.
| A2 REX.W + A2 | MOV moffs8,AL MOV moffs8***,AL| TD TD| Valid Valid| Valid N.E. | Move AL to (seg:offset).Move AL to
| | | | | | (offset).
| A3 | MOV moffs16*,AX | TD | Valid | Valid | Move AX to (seg:offset).
| A3 | MOV moffs32*,EAX | TD | Valid | Valid | Move EAX to (seg:offset).
| REX.W + A3 | MOV moffs64*,RAX | TD | Valid | N.E. | Move RAX to (offset).
| B0+ rb ib REX + B0+ rb ib| MOV r8, imm8 MOV r8***, imm8 | OI OI| Valid Valid| Valid N.E. | Move imm8 to r8.Move imm8 to r8.
| B8+ rw iw | MOV r16, imm16 | OI | Valid | Valid | Move imm16 to r16.
| B8+ rd id | MOV r32, imm32 | OI | Valid | Valid | Move imm32 to r32.
| REX.W + B8+ rd io | MOV r64, imm64 | OI | Valid | N.E. | Move imm64 to r64.
| C6 /0 ib | MOV r/m8, imm8 | MI | Valid | Valid | Move imm8 to r/m8.
| REX + C6 /0 ib | MOV r/m8***, imm8 | MI | Valid | N.E. | Move imm8 to r/m8.
| C7 /0 iw | MOV r/m16, imm16 | MI | Valid | Valid | Move imm16 to r/m16.
| C7 /0 id | MOV r/m32, imm32 | MI | Valid | Valid | Move imm32 to r/m32.
| REX.W + C7 /0 io | MOV r/m64, imm32 | MI | Valid | N.E. | Move imm32 sign extended to 64-bits
| | | | | | to r/m64.
Notes:* The moffs8, moffs16, moffs32 and moffs64 operands specify a simple
offset relative to the segment base, where 8, 16, 32 and 64 refer to the size
of the data.The address-size attribute of the instruction determines the size
of the offset, either 16, 32 or 64 bits.** In 32-bit mode, the assembler may
insert the 16-bit operand-size prefix with this instruction (see the following
“Description” section for further information).***In 64-bit mode, r/m8 can
not be encoded to access the following byte registers if a REX prefix is used:
AH, BH, CH, DH.


指令操作数编码:
| Op/En| Operand 1 | Operand 2 | Operand 3| Operand 4
| MR | ModRM:r/m (w) | ModRM:reg (r)| NA | NA
| RM | ModRM:reg (w) | ModRM:r/m (r)| NA | NA
| FD | AL/AX/EAX/RAX | Moffs | NA | NA
| TD | Moffs (w) | AL/AX/EAX/RAX| NA | NA
| OI | opcode + rd (w)| imm8/16/32/64| NA | NA
| MI | ModRM:r/m (w) | imm8/16/32/64| NA | NA

Description:
Copies the second operand (source operand) to the first operand (destination
operand).The source operand can be an immediate value, general-purpose register,
segment register, or memory location; the destination register can be a general-purpose
register, segment register, or memory location.Both operands must be the same
size, which can be a byte, a word, a doubleword, or a quadword.

The MOV instruction cannot be used to load the CS register.Attempting to do
so results in an invalid opcode exception (#UD).To load the CS register, use
the far JMP, CALL, or RET instruction.

If the destination operand is a segment register (DS, ES, FS, GS, or SS), the
source operand must be a valid segment selector.In protected mode, moving a
segment selector into a segment register automatically causes the segment descriptor
information associated with that segment selector to be loaded into the hidden
(shadow) part of the segment register.While loading this information, the segment
selector and segment descriptor information is validated (see the “Operation”
algorithm below).The segment descriptor data is obtained from the GDT or LDT
entry for the specified segment selector.

A NULL segment selector (values 0000-0003) can be loaded into the DS, ES, FS,
and GS registers without causing a protection exception.However, any subsequent
attempt to reference a segment whose corresponding segment register is loaded
with a NULL value causes a general protection exception (#GP) and no memory
reference occurs.

Loading the SS register with a MOV instruction inhibits all interrupts until
after the execution of the next instruction.This operation allows a stack pointer
to be loaded into the ESP register with the next instruction (MOV ESP, stack-pointer
value) before an interrupt occurs1.Be aware that the LSS instruction offers
a more efficient method of loading the SS and ESP registers.

When operating in 32-bit mode and moving data between a segment register and
a general-purpose register, the 32-bit IA-32 processors do not require the use
of the 16-bit operand-size prefix (a byte with the value 66H) with

| 1.| If a code instruction breakpoint (for
| | debug) is placed on an instruction located
| | immediately after a MOV SS instruction,
| | the breakpoint may not be triggered.
| | However, in a sequence of instructions
| | that load the SS register, only the
| | first instruction in the sequence is
| | guaranteed to delay an interrupt.In
| | the following sequence, interrupts may
| | be recognized before MOV ESP, EBP executes:
| | MOV SS, EDX MOV SS, EAX MOV ESP, EBP
this instruction, but most assemblers will insert it if the standard form of
the instruction is used (for example, MOV DS, AX).The processor will execute
this instruction correctly, but it will usually require an extra clock.With
most assemblers, using the instruction form MOV DS, EAX will avoid this unneeded
66H prefix.When the processor executes the instruction with a 32-bit general-purpose
register, it assumes that the 16 least-significant bits of the general-purpose
register are the destination or source operand.If the register is a destination
operand, the resulting value in the two high-order bytes of the register is
implementation dependent.For the Pentium 4, Intel Xeon, and P6 family processors,
the two high-order bytes are filled with zeros; for earlier 32-bit IA-32 processors,
the two high order bytes are undefined.

In 64-bit mode, the instruction's default operation size is 32 bits.Use of
the REX.R prefix permits access to additional registers (R8-R15).Use of the
REX.W prefix promotes operation to 64 bits.See the summary chart at the beginning
of this section for encoding data and limits.

操作:

DEST <- SRC;
Loading a segment register while in protected mode results in special checks and actions, as described in the
following listing.These checks are performed on the segment selector and the segment descriptor to which it
points.
IF SS is loaded
THEN
IF segment selector is NULL
THEN #GP(0); FI;
IF segment selector index is outside descriptor table limits
or segment selector's RPL != CPL
or segment is not a writable data segment
or DPL != CPL
THEN #GP(selector); FI;
IF segment not marked present
THEN #SS(selector);
ELSE
SS <- segment selector;
SS <- segment descriptor; FI;
FI;
IF DS, ES, FS, or GS is loaded with non-NULL selector
THEN
IF segment selector index is outside descriptor table limits
or segment is not a data or readable code segment
or ((segment is a data or nonconforming code segment)
or ((RPL > DPL) and (CPL > DPL))
THEN #GP(selector); FI;
IF segment not marked present
THEN #NP(selector);
ELSE
SegmentRegister <- segment selector;
SegmentRegister <- segment descriptor; FI;
FI;
IF DS, ES, FS, or GS is loaded with NULL selector
THEN
SegmentRegister <- segment selector;
SegmentRegister <- segment descriptor;
FI;

Flags Affected:
None.


保护模式:
| #GP(0) | If attempt is made to load SS register
| | with NULL segment selector.If the destination
| | operand is in a non-writable segment.
| | If a memory operand effective address
| | is outside the CS, DS, ES, FS, or GS
| | segment limit.If the DS, ES, FS, or
| | GS register contains a NULL segment
| | selector.
| #GP(selector) | If segment selector index is outside
| | descriptor table limits.If the SS register
| | is being loaded and the segment selector's
| | RPL and the segment descriptor's DPL
| | are not equal to the CPL.If the SS
| | register is being loaded and the segment
| | pointed to is a non-writable data segment.
| | If the DS, ES, FS, or GS register is
| | being loaded and the segment pointed
| | to is not a data or readable code segment.
| | If the DS, ES, FS, or GS register is
| | being loaded and the segment pointed
| | to is a data or nonconforming code segment,
| | but both the RPL and the CPL are greater
| | than the DPL.
| #SS(0) | If a memory operand effective address
| | is outside the SS segment limit.
| #SS(selector) | If the SS register is being loaded and
| | the segment pointed to is marked not
| | present.
| #NP | If the DS, ES, FS, or GS register is
| | being loaded and the segment pointed
| | to is marked not present.
| #PF(fault-code)| If a page fault occurs.
| #AC(0) | If alignment checking is enabled and
| | an unaligned memory reference is made
| | while the current privilege level is
| | 3.
| #UD | If attempt is made to load the CS register.
| | If the LOCK prefix is used.

Real-地址模式异常:
| #GP| If a memory operand effective address
| | is outside the CS, DS, ES, FS, or GS
| | segment limit.
| #SS| If a memory operand effective address
| | is outside the SS segment limit.
| #UD| If attempt is made to load the CS register.
| | If the LOCK prefix is used.

Virtual-8086 模式异常:
| #GP(0) | If a memory operand effective address
| | is outside the CS, DS, ES, FS, or GS
| | segment limit.
| #SS(0) | If a memory operand effective address
| | is outside the SS segment limit.
| #PF(fault-code)| If a page fault occurs.
| #AC(0) | If alignment checking is enabled and
| | an unaligned memory reference is made.
| #UD | If attempt is made to load the CS register.
| | If the LOCK prefix is used.

兼容模式:
Same exceptions as in protected mode.


64-Bit 模式异常:
| #GP(0) | If the memory address is in a non-canonical
| | form.If an attempt is made to load
| | SS register with NULL segment selector
| | when CPL = 3.If an attempt is made
| | to load SS register with NULL segment
| | selector when CPL < 3 and CPL != RPL.
| #GP(selector) | If segment selector index is outside
| | descriptor table limits.If the memory
| | access to the descriptor table is non-canonical.
| | If the SS register is being loaded and
| | the segment selector's RPL and the segment
| | descriptor's DPL are not equal to the
| | CPL.If the SS register is being loaded
| | and the segment pointed to is a nonwritable
| | data segment.If the DS, ES, FS, or
| | GS register is being loaded and the
| | segment pointed to is not a data or
| | readable code segment.If the DS, ES,
| | FS, or GS register is being loaded and
| | the segment pointed to is a data or
| | nonconforming code segment, but both
| | the RPL and the CPL are greater than
| | the DPL.
| #SS(0) | If the stack address is in a non-canonical
| | form.
| #SS(selector) | If the SS register is being loaded and
| | the segment pointed to is marked not
| | present.
| #PF(fault-code)| If a page fault occurs.
| #AC(0) | If alignment checking is enabled and
| | an unaligned memory reference is made
| | while the current privilege level is
| | 3.
| #UD | If attempt is made to load the CS register.
| | If the LOCK prefix is used.

MOV - Move to/from Control Registers:
| Opcode/Instruction | Op/En| 64-Bit Mode| Compat/Leg Mode| Description
| 0F 20/r MOV r32, CR0-CR7 | MR | N.E. | Valid | Move control register to r32.
| 0F 20/r MOV r64, CR0-CR7 REX.R + 0F| MR MR| Valid Valid| N.E.N.E. | Move extended control register to r64.
| 20 /0 MOV r64, CR8 | | | | Move extended CR8 to r64.1
| 0F 22 /r MOV CR0-CR7, r32 | RM | N.E. | Valid | Move r32 to control register.
| 0F 22 /r MOV CR0-CR7, r64 | RM | Valid | N.E. | Move r64 to extended control register.
| REX.R + 0F 22 /0 MOV CR8, r64 | RM | Valid | N.E. | Move r64 to extended CR8.1

NOTE::
| 1.| MOV CR* instructions, except for MOV
| | CR8, are serializing instructions.MOV
| | CR8 is not architecturally defined as
| | a serializing instruction.For more
| | information, see Chapter 8 in Intel®
| | 64 and IA-32 Architectures Software
| | Developer's Manual, Volume 3A.

指令操作数编码:
| Op/En| Operand 1 | Operand 2 | Operand 3| Operand 4
| MR | ModRM:r/m (w)| ModRM:reg (r)| NA | NA
| RM | ModRM:reg (w)| ModRM:r/m (r)| NA | NA

Description:
Moves the contents of a control register (CR0, CR2, CR3, CR4, or CR8) to a general-purpose
register or the contents of a general purpose register to a control register.
The operand size for these instructions is always 32 bits in non-64-bit modes,
regardless of the operand-size attribute.(See “Control Registers” in Chapter
2 of the Intel®64 and IA-32 Architectures Software Developer's Manual, Volume
3A, for a detailed description of the flags and fields in the control registers.)
This instruction can be executed only when the current privilege level is 0.

At the opcode level, the reg field within the ModR/M byte specifies which of
the control registers is loaded or read.The 2 bits in the mod field are ignored.
The r/m field specifies the general-purpose register loaded or read.Attempts
to reference CR1, CR5, CR6, CR7, and CR9-CR15 result in undefined opcode (#UD)
exceptions.

When loading control registers, programs should not attempt to change the reserved
bits; that is, always set reserved bits to the value previously read.An attempt
to change CR4's reserved bits will cause a general protection fault.Reserved
bits in CR0 and CR3 remain clear after any load of those registers; attempts
to set them have no impact.On Pentium 4, Intel Xeon and P6 family processors,
CR0.ET remains set after any load of CR0; attempts to clear this bit have no
impact.

In certain cases, these instructions have the side effect of invalidating entries
in the TLBs and the paging-structure caches.See Section 4.10.4.1, “Operations
that Invalidate TLBs and Paging-Structure Caches,” in the Intel® 64 and IA-32
Architectures Software Developer's Manual, Volume 3A for details.

The following side effects are implementation-specific for the Pentium 4, Intel
Xeon, and P6 processor family: when modifying PE or PG in register CR0, or PSE
or PAE in register CR4, all TLB entries are flushed, including global entries.
Software should not depend on this functionality in all Intel 64 or IA-32 processors.

In 64-bit mode, the instruction's default operation size is 64 bits.The REX.R
prefix must be used to access CR8.Use of REX.B permits access to additional
registers (R8-R15).Use of the REX.W prefix or 66H prefix is ignored.Use of

the REX.R prefix to specify a register other than CR8 causes an invalid-opcode
exception.See the summary chart at the beginning of this section for encoding
data and limits.

If CR4.PCIDE = 1, bit 63 of the source operand to MOV to CR3 determines whether
the instruction invalidates entries in the TLBs and the paging-structure caches
(see Section 4.10.4.1, “Operations that Invalidate TLBs and Paging-Structure
Caches,” in the Intel® 64 and IA-32 Architectures Software Developer's Manual,
Volume 3A).The instruction does not modify bit 63 of CR3, which is reserved
and always 0.

See “Changes to Instruction Behavior in VMX Non-Root Operation” in Chapter 25
of the Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume
3C, for more information about the behavior of this instruction in VMX non-root
operation.

操作:

DEST <- SRC;

Flags Affected:
The OF, SF, ZF, AF, PF, and CF flags are undefined.


保护模式:
| #GP(0)| If the current privilege level is not
| | 0.If an attempt is made to write invalid
| | bit combinations in CR0 (such as setting
| | the PG flag to 1 when the PE flag is
| | set to 0, or setting the CD flag to
| | 0 when the NW flag is set to 1).If
| | an attempt is made to write a 1 to any
| | reserved bit in CR4.If an attempt is
| | made to write 1 to CR4.PCIDE.If any
| | of the reserved bits are set in the
| | page-directory pointers table (PDPT)
| | and the loading of a control register
| | causes the PDPT to be loaded into the
| | processor.
| #UD | If the LOCK prefix is used.If an attempt
| | is made to access CR1, CR5, CR6, or
| | CR7.

Real-地址模式异常:
| #GP| If an attempt is made to write a 1 to
| | any reserved bit in CR4.If an attempt
| | is made to write 1 to CR4.PCIDE.If
| | an attempt is made to write invalid
| | bit combinations in CR0 (such as setting
| | the PG flag to 1 when the PE flag is
| | set to 0).
| #UD| 如果使用LOCK前缀.If an attempt
| | is made to access CR1, CR5, CR6, or
| | CR7.

Virtual-8086 模式异常:
| #GP(0)| These instructions cannot be executed
| | in virtual-8086 mode.

兼容模式:
| #GP(0)| If the current privilege level is not
| | 0.If an attempt is made to write invalid
| | bit combinations in CR0 (such as setting
| | the PG flag to 1 when the PE flag is
| | set to 0, or setting the CD flag to
| | 0 when the NW flag is set to 1).If
| | an attempt is made to change CR4.PCIDE
| | from 0 to 1 while CR3[11:0] != 000H.
| | If an attempt is made to clear CR0.PG[bit
| | 31] while CR4.PCIDE = 1.If an attempt
| | is made to write a 1 to any reserved
| | bit in CR3.If an attempt is made to
| | leave IA-32e mode by clearing CR4.PAE[bit
| | 5].
| #UD | If the LOCK prefix is used.If an attempt
| | is made to access CR1, CR5, CR6, or
| | CR7.

64-Bit 模式异常:
| #GP(0)| If the current privilege level is not
| | 0.If an attempt is made to write invalid
| | bit combinations in CR0 (such as setting
| | the PG flag to 1 when the PE flag is
| | set to 0, or setting the CD flag to
| | 0 when the NW flag is set to 1).If
| | an attempt is made to change CR4.PCIDE
| | from 0 to 1 while CR3[11:0] != 000H.
| | If an attempt is made to clear CR0.PG[bit
| | 31].If an attempt is made to write
| | a 1 to any reserved bit in CR4.If an
| | attempt is made to write a 1 to any
| | reserved bit in CR8.If an attempt is
| | made to write a 1 to any reserved bit
| | in CR3.If an attempt is made to leave
| | IA-32e mode by clearing CR4.PAE[bit
| | 5].
| #UD | If the LOCK prefix is used.If an attempt
| | is made to access CR1, CR5, CR6, or
| | CR7.If the REX.R prefix is used to
| | specify a register other than CR8.

MOV - Move to/from Debug Registers:
| Opcode/Instruction | Op/En| 64-Bit Mode| Compat/Leg Mode| Description
| 0F 21/r MOV r32, DR0-DR7 | MR | N.E. | Valid | Move debug register to r32.
| 0F 21/r MOV r64, DR0-DR7 | MR | Valid | N.E. | Move extended debug register to r64.
| 0F 23 /r MOV DR0-DR7, r32| RM | N.E. | Valid | Move r32 to debug register.
| 0F 23 /r MOV DR0-DR7, r64| RM | Valid | N.E. | Move r64 to extended debug register.

指令操作数编码:
| Op/En| Operand 1 | Operand 2 | Operand 3| Operand 4
| MR | ModRM:r/m (w)| ModRM:reg (r)| NA | NA
| RM | ModRM:reg (w)| ModRM:r/m (r)| NA | NA

Description:
Moves the contents of a debug register (DR0, DR1, DR2, DR3, DR4, DR5, DR6, or
DR7) to a general-purpose register or vice versa.The operand size for these
instructions is always 32 bits in non-64-bit modes, regardless of the operand-size
attribute.(See Section 17.2, “Debug Registers”, of the Intel® 64 and IA-32
Architectures Software Developer's Manual, Volume 3A, for a detailed description
of the flags and fields in the debug registers.)

The instructions must be executed at privilege level 0 or in real-address mode.

When the debug extension (DE) flag in register CR4 is clear, these instructions
operate on debug registers in a manner that is compatible with Intel386 and
Intel486 processors.In this mode, references to DR4 and DR5 refer to DR6 and
DR7, respectively.When the DE flag in CR4 is set, attempts to reference DR4
and DR5 result in an undefined opcode (#UD) exception.(The CR4 register was
added to the IA-32 Architecture beginning with the Pentium processor.)

At the opcode level, the reg field within the ModR/M byte specifies which of
the debug registers is loaded or read.The two bits in the mod field are ignored.
The r/m field specifies the general-purpose register loaded or read.

In 64-bit mode, the instruction's default operation size is 64 bits.Use of
the REX.B prefix permits access to additional registers (R8-R15).Use of the
REX.W or 66H prefix is ignored.Use of the REX.R prefix causes an invalidopcode
exception.See the summary chart at the beginning of this section for encoding
data and limits.

操作:

IF ((DE = 1) and (SRC or DEST = DR4 or DR5))
THEN
#UD;
ELSE
DEST <- SRC;
FI;

Flags Affected:
The OF, SF, ZF, AF, PF, and CF flags are undefined.


保护模式:
| #GP(0)| If the current privilege level is not
| | 0.
| #UD | If CR4.DE[bit 3] = 1 (debug extensions)
| | and a MOV instruction is executed involving
| | DR4 or DR5.If the LOCK prefix is used.
| #DB | If any debug register is accessed while
| | the DR7.GD[bit 13] = 1.

Real-地址模式异常:
| #UD| If CR4.DE[bit 3] = 1 (debug extensions)
| | and a MOV instruction is executed involving
| | DR4 or DR5.If the LOCK prefix is used.
| #DB| If any debug register is accessed while
| | the DR7.GD[bit 13] = 1.

Virtual-8086 模式异常:
| #GP(0)| The debug registers cannot be loaded
| | or read when in virtual-8086 mode.

兼容模式:
Same exceptions as in protected mode.


64-Bit 模式异常:
| #GP(0)| If the current privilege level is not
| | 0.If an attempt is made to write a
| | 1 to any of bits 63:32 in DR6.If an
| | attempt is made to write a 1 to any
| | of bits 63:32 in DR7.
| #UD | If CR4.DE[bit 3] = 1 (debug extensions)
| | and a MOV instruction is executed involving
| | DR4 or DR5.If the LOCK prefix is used.
| | If the REX.R prefix is used.
| #DB | If any debug register is accessed while
| | the DR7.GD[bit 13] = 1.
================================================================
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×