C++代码和可执行程序在x86和arm上的区别
Posted zhangrelay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++代码和可执行程序在x86和arm上的区别相关的知识,希望对你有一定的参考价值。
从使用上来看,可执行程序肯定是不通用的。
arm | x86 |
生成的可执行程序大小都有差异呢。
但是,如果源码编译,如果环境类似,相同的源码可以直接移植。
例如:如下程序👇donut.cpp
#include <stdio.h>
#include <math.h>
#include <cstring>
#include <unistd.h>
int main()
float A = 0, B = 0;
float i, j;
int k;
float z[1760];
char b[1760];
printf("\\x1b[2J");
for (;;)
memset(b, 32, 1760);
memset(z, 0, 7040);
for (j = 0; j < 6.28; j += 0.07)
for (i = 0; i < 6.28; i += 0.02)
float c = sin(i);
float d = cos(j);
float e = sin(A);
float f = sin(j);
float g = cos(A);
float h = d + 2;
float D = 1 / (c * h * e + f * g + 5);
float l = cos(i);
float m = cos(B);
float n = sin(B);
float t = c * h * g - f * e;
int x = 40 + 30 * D * (l * h * m - t * n);
int y = 12 + 15 * D * (l * h * n + t * m);
int o = x + 80 * y;
int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);
if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o])
z[o] = D;
b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
printf("\\x1b[H");
for (k = 0; k < 1761; k++)
putchar(k % 80 ? b[k] : 10);
A += 0.00004;
B += 0.00002;
usleep(30000);
return 0;
效果一致。
编译过程都是:
g++ donut.cpp -o donut
生成文件大小:
arm→13.5 KB (13,856.00 字节)
x86→ 16.0 KB (16,384 字节)
很多软件都支持多平台,但是类似如下:
这些都是x86案例,并不支持arm。
支持arm会单独列出来。
ARM 与 X86 的概述
X86 指 Intel 处理器家族,从 8086 开始,随后发布 80186、80286、80386、80486、Pentium 和 Xeon 等。X86 中的 86 表示其早期处理器的最后 2 位数字。
ARM 最初由 ARM Holdings 以 Acorn RISC Machine 起家,开发了 ARM、ARM2 32 位处理器,其晶体管数量最少,功耗/散热更低。 X86 主导台式机、工作站、笔记本电脑和服务器市场,最初的芯片是 16 位,后来的版本是 32 位和 64 位。
ARM 在速度和长电池寿命方面超过了英特尔处理器。 与 Apple 和 VLSI 合作推出了一家新公司 Advanced RISC Machines。 ARM 处理器广泛用于移动设备。
X86和ARM是占据CPU市场的两大处理器,各有优劣。
它们可以在某些关键方面进行比较,例如它们采用的指令集、功耗、软件和应用程序。
指令系统
ARM 处理器属于精简指令集计算 (RISC) 架构。
指令集架构 (ISA) 定义了处理指令、访问内存、管理 IO 的方式,并将处理器与程序员连接起来以生成高效的代码。
RISC 是同类中最新的一种,其中活动被拆分(简化)为简单指令,一条指令在一个时钟周期内执行,数百万条此类指令在一秒钟内以更快的速度处理。
虽然它必须执行多条指令,但由于其强大的处理器和流水线,整体速度更高。
X86 处理器遵循复杂指令集计算 (CISC) 架构。
复杂的指令在多个时钟周期中的单个步骤中处理。它使用可用内存在一个步骤中处理多条指令,更注重处理效率。
它使用更多的寄存器来完成多个任务,实现了高吞吐量和性能。
能量消耗
ARM 处理器一次执行一条指令,它需要较少的硬件。与其他处理器相比,该处理器使用的寄存器没有更少。因此,它消耗的电量更少,使用该处理器的设备的电池寿命更长。它还产生较少的热量。 ARM 使用更多内存来处理多条指令。即使使用 GPU 和其他外围设备,它也会消耗 5W 的功率。
X86 处理器更注重性能和高吞吐量,它使用更多的寄存器来实现它。因此,这里的功耗和热量产生更多。 Intel i7 是一款高端处理器,功耗为 130w。
ARM 处理器因其较低的功耗和较长的电池寿命而成为移动设备的首选,这对于为任何应用程序选择 CPU 至关重要。
始终连接到可靠电源的设备无需担心功耗,因此台式机、笔记本电脑和服务器使用 X86 以提高效率,但代价是高功耗。
软件
配备 ARM Process 的设备可在专为 ARM 开发的 android 操作系统上运行。台式机、笔记本电脑和服务器在为 X86 处理器开发的 Unix、Linux 和 Windows 等操作系统上运行。
一些接口软件允许任何操作系统在任何设备上运行,但基于 ARM 的系统在为 X86 开发的某些操作系统中运行存在限制。
由于 ARM 的流行,微软发布了新版本的 windows for ARM。
应用
处理器的选择取决于计算机将用于的应用程序。对于 IOT 应用,ARM 处理器是正确的选择,因为嵌入式系统需要连接到所有设备,而且它应该有点小。
如果某些应用需要具有成本节约动机的单板计算机,ARM 是最佳选择。对于不需要特殊显示器的节俭应用,ARM 是理想的选择。需要强大平台 X86 的应用程序是正确的选择。
以上是关于C++代码和可执行程序在x86和arm上的区别的主要内容,如果未能解决你的问题,请参考以下文章