`

【翻译】(22)CPU X86

 
阅读更多

-----------------

英文文档见android-ndk-r6b的documentation.html

属于Android Native Development Kit (NDK)的一部分

http://developer.android.com/sdk/ndk/

翻译仅个人见解

-----------------

 

Android NDK x86 (a.k.a. IA-32) instruction set support

 

Android NDK x86(即IA-32)指令集支持

------------------------------------------------------

 

Introduction:

 

介绍:

-------------

 

Android NDK r6 added support for the 'x86' ABI, that allows native code to run on Android-based devices running on CPUs supporting the IA-32 instruction set.

 

Android NDK r6 添加对x86 ABI的支持,允许原生代码运行在使用支持IA-32指令集CPU的基于Android的设备。

 

The Android x86 ABI itself is fully specified in docs/CPU-ARCH-ABIS.html.

 

Android x86 ABI自身完全在docs/CPU-ARCH-ABIS.html中指定。

 

Overview:

 

概述:

---------

 

Generating x86 machine code is simple: just add 'x86' to your APP_ABI definition in your Application.mk file, for example:

 

生成x86机器代码的方法很简单:只要添加x86到你的Application.mk文件中的APP_ABI定义,例如:

 

   APP_ABI := armeabi armeabi-v7a x86

 

will generate machine code for all supported ABIs with this NDK. Doing so will ensure that your application package contains libraries for all target ABIs. Note that this has an impact on package size, since each ABI will correspond to its own set of native libraries built from the same sources.

 

它将生成含有对这个版本NDK所支持的全部ABI的机器代码。这么做确保你的应用程序包包含供所有目标ABI使用的库。注意这会对包的大小造成影响,因为每个ABI将对应它自己特定的从同一份源码中构建出来的原生库集合。

 

The default ABI is still 'armeabi', if unspecified in your project.

 

默认的ABI仍然是armeabi,如果在你的工程中没有指定。

 

As you would expect, generated libraries will go into $PROJECT/libs/x86/, and will be embedded into your .apk under /lib/x86/.

 

正如你所期待的,生成的库将输出到$PROJECT/libs/x86/,它们将被嵌入进你的.apk文件的/lib/x86/目录下。

 

And just like other ABIs, the Android package manager will extract these libraries on a *compatible* x86-based device automatically at install time, to put them under <dataPath>/lib, where <dataPath> is the application's private data directory.

 

而且正如其它ABI那样,Android包管理器将在安装期自动地在一个可兼容基于x86的设备上抽取这些库,并把它们放到<dataPath>/lib目录下,这里<dataPath>是应用程序的私有数据。

 

Similarly, the Android Market server is capable of filtering applications based on the native libraries they embed and your device's target CPU.

 

类似地,Android市场的服务器能过滤基于他们所嵌入原生库的应用程序,以及你的设备的目标CPU。

 

Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.

 

用ndk-gdb调试应该可以,正如docs/NDK-GDB.html所描述的那样。

 

Standalone-toolchain:

 

独立运行工具链:

---------------------

 

It is possible to use the x86 toolchain with NDK r6 in stand-alone mode. See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking, it is now possible to run:

 

可以在独立运行模式下使用NDK r6所带的x86工具链。参考docs/STANDALONE-TOOLCHAIN.html的内容以获取详细信息。简单来说,现在可以运行:

 

  $NDK/build/tools/make-standalone-toolchain.sh --arch=x86 --install-dir=

 

The toolchain binaries have the i686-android-linux- prefix.

 

工具链的二进制文件带有i686-android-linux-前缀。

 

Compatibility:

 

兼容性:

--------------

 

The minimal native API level provided by official Android x86 platform builds is 9, which corresponds to all the native APIs provided by Android 2.3, i.e. Gingerbread (note also that no new native APIs were introduced by Honeycomb).

 

官方Android平台构建所提供的最小原生API级别为9,它对应Android 2.3,即姜饼,提供的所有原生API(注意蜂房还没有新的原生API)

 

You won't have to change anything to your project files if you target an older API level: the NDK build script will automatically select the right set of native platform headers/libraries for you.

 

如果你的目标是较旧的API级别,你不必改动你的工程文件:NDK构建脚本将自动为你选择正确的原生平台的头文件或库文件。

 

Note that, as of today (June 2011), *no* compatible x86 devices exist on the market.

 

注意,时至今日(2011年6月),市场上还没有可兼容的x86设备(注:这里应该指移动设备)。

 

In particular, while there are various projects which have forked the official Android open-source tree and added their own x86-specific customizations, there is absolutely no guarantee that anything generated with the official Android NDK is going to run on them at the moment.

 

特别地,当有某些项目从官方的Android开源代码树中分支出去并且添加它们自己特定于x86的定制项,将肯定不能保证现在用官方Android NDK生成的所有东西将能继续运行在它们(注:指分支出去的项目)上面。

 

分享到:
评论

相关推荐

    X86 CPU在段式管理下的地址形成机制

    首先,我们要理解X86 CPU的地址翻译机制。80x86系列CPU支持段式管理,这是一种历史遗留下来的存储管理方式,主要是因为早期的CPU设计。在段式管理中,程序员使用的地址形式是“段基址:偏移量”,这被称为虚拟地址,...

    X86 CPU解码工具源码

    X86 CPU解码工具是针对这种架构的处理器设计的一种实用软件,其核心功能是将CPU执行的机器指令转化为人类可读的汇编语言代码。 这个源码包包含以下几个关键文件: 1. **DecodeCPUCode.cpp**:这是主程序源文件,...

    G95 g95-x86-linux.tgz

    1. 拥有x86架构的CPU。 2. 正确安装并运行的Linux操作系统。 3. 系统中应具备基本的开发工具,如make、gcc(用于编译G95自身)等。 4. 权限:为了安装软件,用户通常需要具有sudo权限或者以root身份登录。 安装步骤...

    (2022-03-10)龙芯LoongArch二进制翻译组件包 latx-1.1.3-alpha

    二进制翻译目前支持龙芯3A5000、3B5000、3C5000等型的CPU,下列软件包可在UOS专业版(Loongarch)和Loongnix上安装。此版本2022-03-10日发布。 安装时请按照下列顺序: lat_1.1.3_alpha3.lnd.2_loongarch64.deb i386-...

    tensorflow-2.10.0-cp39-cp39-manylinux-2-17-x86-64.zip

    安装 TensorFlow 2.10.0 后,用户可以利用其丰富的 API 来创建模型,如卷积神经网络(CNN)用于图像识别,循环神经网络(RNN)用于自然语言处理,或自注意力机制的Transformer模型进行翻译等任务。此外,TensorFlow ...

    bochs 安卓X86虚拟机

    Bochs支持动态二进制翻译(Dynamic Binary Translation),这意味着它可以将X86指令转换为Android设备上的ARM指令,使得X86软件能在ARM架构上运行。 在Android设备上安装和配置Bochs并不简单,但通过提供的Bochs2_5...

    x86emu:简单的x86模拟器

    6. **性能优化**:为了提高效率,许多模拟器会采用各种优化技术,如动态翻译,即将x86指令转换为本地代码以提高执行速度。 在x86emu的源代码(如压缩包中的x86emu-master)中,你可以找到上述组件的具体实现。通常...

    jmc8.0.0-win32.win32.x86_64.zip

    2. **Java VisualVM**:这是一款多用途的可视化工具,可以分析CPU、内存、线程、类加载等方面的问题。它能显示实时的JVM状态,并提供内存堆分析、线程快照等功能。 3. **Mission Control Client**:作为主界面,它...

    genymotion-arm-cpu

    然而,在使用过程中,有时可能会遇到"INSTALL_FAILED_CPU_ABI_INCOMPATIBLE"的错误,这通常是由于Genymotion默认使用的是基于x86架构的模拟器,而某些应用或服务可能需要armeabi-v7a或arm64-v8a架构的CPU支持。...

    Bochs x86 PC emulator

    与流行的虚拟化软件如VirtualBox不同,Bochs是基于动态二进制翻译的全模拟器,这意味着它不依赖于宿主机的硬件辅助虚拟化特性,而是直接解释和执行x86指令。这种方式使得Bochs可以在任何支持x86架构的系统上运行,但...

    X86平台的国产化迁移漫谈.docx

    * 移动应用:传统的 x86 平台依赖指令翻译运行安卓应用,性能损耗大,兼容性也无法保障。 * 服务器端应用:服务器端有很多应用需要测试,过去的做法是真机测试,或者手机开发仿真环境,这种做法的资源灵活度低、故障...

    x86汇编程序基础(AT&T语法)

    - **软中断**:`int`指令用于产生软中断,使得CPU从用户模式切换到内核模式,从而允许内核代码执行。 - **系统调用**:立即数`0x80`是一个参数,它指示内核执行特定的系统调用。在这个例子中,`eax`寄存器中的值`1`...

    计算机专业英语文章翻译

    计算机专业英语文章翻译主要涉及了计算机系统的组织结构、中央处理器(CPU)、主板以及存储器等核心组件的英文解析和中文翻译。这些主题是计算机科学的基础,对于理解和操作计算机硬件至关重要。 计算机系统的组织...

    x86虚拟化概述1

    在x86架构中,CPU使用Ring 0到Ring 3的权限级别来管理软件的访问权限,其中Ring 0是最高权限,通常由操作系统内核使用。在虚拟化环境中,VMM运行在Ring 0,而Guest OS运行在较低的权限级别,通常是Ring 1或Ring 3,...

    AMD发布两款标压锐龙笔记本CPU.pdf

    AMD 锐龙笔记本 CPU 和 NVIDIA Tesla T4 计算卡技术剖析 在本文中,我们将详细...国产 3.0GHz x86 处理器的获得也标志着国产 CPU 的发展取得了重要突破。这些技术的发展将对笔记本平台和 AI 应用领域产生重要影响。

    cpu中英文术语中英文对照

    - **定义**: TLBs(翻译旁视缓冲器),是现代计算机体系结构中的一个重要组件,主要用于提高虚拟地址到物理地址转换的速度。 - **作用**: 在内存访问过程中,CPU需要将程序使用的虚拟地址转换为实际的物理地址,这个...

    cpu_supplement.RTEMS_CPU架构增补.双语.V20131224.pdf

    这份文档的中文翻译由Tony Zhu完成,旨在为中文读者提供深入理解RTEMS内核如何针对不同CPU模型进行优化和扩展的信息。以下是基于文档标题、描述以及部分内容的关键知识点总结: ### 1. RTEMS简介 RTEMS(Real-Time ...

    Python库 | ctranslate2-2.4.0-cp39-cp39-manylinux2014_x86_64.whl

    `ctranslate2`库的核心是提供一个快速的神经网络翻译模型,它优化了序列到序列(seq2seq)模型的推理过程,使得在CPU或GPU上运行时,能保持较高的翻译速度。`cp39`代表Python 3.9版本的兼容性,而`manylinux2014_x86...

    CPU背后的故事.pdf

    之后,Intel公司推出了8086芯片,标志着16位处理器的诞生,并且在后续产品的命名上一直延续使用x86的方式。 随着市场的扩大,AMD和 Cyrix 等公司也进入了CPU市场,并将产品命名为386、486等,促使Intel公司在586时...

Global site tag (gtag.js) - Google Analytics