C++代碼和可執行程序在x86和arm上的區別介紹

從使用上來看,可執行程序肯定是不通用的。

armx86

生成的可執行程序大小都有差異呢。 

但是,如果源碼編譯,如果環境類似,相同的源碼可以直接移植。

例如:如下程序👇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上的區別的文章就介紹到這瞭,更多相關C++ x86和arm區別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: