arm汇编程序的典型应用_如何在ARM上为Windows构建64位应用程序

arm汇编程序的典型应用

Windows生态系统的大部分生命都与一个处理器家族相关联:英特尔的x86和兼容的设备(例如AMD的)。 Windows NT与其他处理器家族的短暂争夺并没有持续多久,在发布了一些版本之后,MIP和DEC的Alpha被搁置了。 甚至英特尔的Itanium也没有持续很长时间,Windows Server 2008 R2是支持它的最新版本。

但是随着Windows 8的发布,英特尔对Windows平台的统治开始发生真正的变化。新版Windows RT将其带入了新的处理器体系结构,并支持ARM不断增长的硬件家族。 功能有限的Windows RT寿命很短,因此除了Microsoft最初的Surface RT之外,它几乎没有硬件支持。 但是Windows 10的IoT Core版本和基于NT内核的Windows 10 Mobile都存在Windows对ARM的支持。

[评论: Visual Studio 2017是有史以来最好的 | Microsoft的Visual Studio 2017中的新增功能 | 通过《 InfoWorld日报》时事通讯了解最新的企业技术中的关键新闻和问题。 ]

在ARM上介绍Windows

2017年底,微软宣布Windows on ARM ,这是Windows 10的完整版本,它将在最新一代的ARM处理器上运行。 它是由高通公司开发的,包括一个仿真层,该层可以运行32位x86代码以及为ARM32编译的UWP应用。 该模拟器运行良好,并且代码无法在其中运行Microsoft快速发布了经过修改的配置,这些配置可以使这些应用程序运行。

使用高通公司的LTE Snapdragon片上系统(SoC)硬件的始终在线,始终连接的硬件很有吸引力。 它可以比智能手机更有效地支持移动业务场景,并具有18个小时或更长的电池寿命,从而确保即使在12个小时轮班结束时,移动PC仍然可以在线。 像所有PC一样,这些机器也需要软件,这些软件应尽最大可能发挥作用。

不幸的是,ARM上的Windows依赖于32位代码是一个限制,因为现代代码倾向于针对64位系统进行编译,从而支持Windows在Intel系统上的默认安装。 因此,尽管您可能有一个应用程序要安装在基于ARM的Windows PC上,但没有32位版本,则可能不支持该应用程序。

对于第一批设备来说,对64位的支持是一个很大的问题,这些设备运行的是高端智能手机级Snapdragon 845处理器,性能受到限制。 但是,高通公司ARM处理器的发展路线图表明,性能将在未来几年内显着提高,并且当前的设备已经在使用功能更强大的Snapdragon850。用于新计算机的代码需要获得最佳性能,并避免仿真开销。

如今,在现代设备上运行本机ARM64代码消除了与运行模拟x86代码相关的任何惩罚,同时简化了代码从一种处理器类型到另一种处理器类型的移植。

Visual Studio现在支持ARM64

Beta版本的Visual Studio 15更新现在已有ARM 64位支持。 但是,它还没有投入生产,尽管您可以将64位ARM应用程序的构建侧面加载到测试设备上,但是您不能通过公共或私有Windows应用商店分发这些应用程序。 随着Visual Studio 15.9的发布,这一切都发生了变化,该版本使ARM64支持成为正式支持,并且可以选择通过Windows Store分发代码。

Microsoft鼓励开发人员构建UWP应用程序的 ARM64版本,但Visual Studio 15.9还支持ARM64 C ++代码。 这是一个重要的更改,因为您可以通过安装一组新的Visual C ++编译器和库来使用它来交付复杂应用程序的本机版本。 您需要做的就是设置一个新的构建目标并编译您的代码。 现有的Win32代码应该可以进行很少的编译,并且现在可以使用Microsoft的Desktop Bridge将您的代码直接传递到Windows应用商店,以制作与Windows应用商店兼容的软件包。

另外,Visual Studio的安装程序工具将构建与ARM兼容的安装包,因此可以从现有的本地部署工具中安装代码。 桌面桥包装的代码也将从Intune的公司商店中安装,这为您提供了另一种选择来控制对任何ARM64业务关键代码的访问。

更新现有项目以针对ARM64

Visual Studio项目添加ARM64支持非常容易

  • 对于C ++ UWP,您需要做的就是添加C ++ Universal Windows Platform工具。 安装它们后,您可以使用项目配置工具为ARM64添加新的解决方案平台。 如果您的依赖项支持该平台,请保存代码并将ARM64用作构建目标。
  • 基于.Net的UWP应用需要针对Windows 10的受支持版本,并在项目文件中具有ARM64的新属性组。 与C ++一样,为ARM64创建一个新的解决方案平台,并构建和测试您的代码。

Microsoft 提供了有关将现有UWP应用移植到ARM和ARM64的准则。 要记住的最重要的事情之一是,尽管ARM设备上的Windows具有内置的蜂窝调制解调器,但它们不是智能手机。 我桌上的HP Envy X2是Surface尺寸的设备,具有大屏幕,并且没有智能手机上的任何按钮。 为Windows 10移动版编写的代码将移植到ARM上的Windows,但它需要一个全新的UI来解决在移动PC和智能手机中缺少的设备按钮和更大的屏幕空间的问题。

UWP尚未完全替代.Net Framework ,因此在将现有.Net代码移植到UWP for ARM时,需要谨慎行事。 某些.Net组件尚未移植到ARM,因此您可能需要与供应商协商以获取针对新平台编译的版本。

另外,要调试ARM64代码,您需要Windows on ARM设备。 作为构建过程的一部分,将代码侧面加载到测试硬件上,然后使用Visual Studio的远程调试工具设置断点并访问测试设备上的堆栈。

构建本机ARM驱动程序

Visual Studio 15.9的一个重要方面是对构建基于ARM64的驱动程序的支持 。 将Windows Driver Kit与ARM和ARM64 C ++编译器结合使用,可以基于Microsoft的示例代码构建新的驱动程序,也可以修改现有的Windows驱动程序代码。 由于ARM上的Windows是熟悉的Windows内核,因此应该可以进行重新编译。

但是,两个平台之间的体系结构差异可能会导致问题。 驱动程序的级别越低,可能就需要进行更多的工作,尽管这应该仅属于设备制造商。 自定义USB连接的硬件不应过多依赖于ARM或x86,从而将风险降至最低。

翻译自: https://www.infoworld.com/article/3321931/how-to-build-64-bit-apps-for-windows-on-arm.html

arm汇编程序的典型应用

-------------------------- 我是汇编爱好者 QQ695367480 高手别找我了 我是菜鸟。 -------------------------- 内容简介: Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。本书从编写应用程序的角度,从“Hello World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过60多个实例逐渐深入Win32汇编语言的方方面面。本书作者罗云彬拥有十余年汇编语言编程经验,是汇编编程网站http://asm.yeah.net和汇编编程论坛http://win32asm.yeah.net的站长。本书是作者多年来编程工作的总结,适合于欲通过Win32汇编语言编写Windows程序的读者。 第1章 背景知识 1.1 Win32的软硬件平台(1) 1.1 Win32的软硬件平台(2) 1.2 Windows的特色 1.3 必须了解的东西(1) 1.3 必须了解的东西(2) 1.3 必须了解的东西(3) 1.3 必须了解的东西(4) 1.3 必须了解的东西(5) 第2章 准备编程环境 2.1 Win32可执行文件的开发过程 2.2 编译器和链接器(1) 2.2 编译器和链接器(2) 2.2 编译器和链接器(3) 2.3 创 建 资 源 2.4 make工具的用法(1) 2.4 make工具的用法(2) 2.5 获 取 资 料 2.6 构建编程环境 第3章 使用MASM 当搭建编译和对编译器的使用不再成为绊脚石的时候,初学者的问题往往集中在对Windows程序结构的迷惑上,消息驱动体系、窗口过程、与硬件隔绝的图形接口及资源文件等相对于DOS程序来说都是全新的内容,接下来的4章将深入讨论这些内容,通过这几章,读者应该开始习惯以Windows的方式考虑问题了(脑海中的DOS逐渐远去...),这就是本书的初级篇: 3.1 Win32汇编源程序的结构(1) 3.1 Win32汇编源程序的结构(2) 3.1 Win32汇编源程序的结构(3) 3.2 调用API(1) 3.2 调用API(2) 3.2 调用API(3) 3.3 标号、变量和数据结构(1) 3.3 标号、变量和数据结构(2) 3.3 标号、变量和数据结构(3) 3.3 标号、变量和数据结构(4) 3.3 标号、变量和数据结构(5) 3.4 使用子程序 3.5 高 级 语 法(1) 3.5 高 级 语 法(2) 3.6 代 码 风 格(1) 3.6 代 码 风 格(2) 第4章 第一个窗口程序 4.1 开始了解窗口(1) 4.1 开始了解窗口(2) 4.1 开始了解窗口(3) 4.2 分析窗口程序(1) 4.2 分析窗口程序(2) 4.2 分析窗口程序(3) 4.2 分析窗口程序(4) 4.2 分析窗口程序(5) 4.3 窗口间的消息互发 4.4 实 验(1) 4.4 实 验(2) 4.4 实 验(3) 第5章 使用资源 5.1 菜单和加速键(1) 5.1 菜单和加速键(2) 5.1 菜单和加速键(3) 5.1 菜单和加速键(4) 5.1 菜单和加速键(5) 5.1 菜单和加速键(6) 5.1 菜单和加速键(7) 5.2 图标和光标(1) 5.2 图标和光标(2) 5.3 位 图 5.4 对 话 框(1) 5.4 对 话 框(2) 5.4 对 话 框(3) 5.4 对 话 框(4) 5.4 对 话 框(5) 5.4 对 话 框(6) 5.4 对 话 框(7) 5.4 对 话 框(8) 5.4 对 话 框(9) 5.4 对 话 框(10) 5.4 对 话 框(11) 5.5 字符串资源/5.6 版本信息资源(1) 5.6 版本信息资源(2) 5.7 二进制资源和自定义资源 第6章 定时器 6.1 定时器简介/6.2 定时器的使用(1) 6.2 定时器的使用(2) 6.3 取Windows时间 第7章 图形操作 Windows系统不像DOS系统,它的应用程序界面是规范化的,统一的界面来自大量的系统界面控件,学习这些控件就等于学习如何编写Windows界面,下面的界面篇中的两章将探讨这方面的内容: 7.1 GDI原理(1) 7.1 GDI原理(2) 7.1 GDI原理(3) 7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值