當前位置:首頁 » 編程軟體 » 龍芯編譯速度

龍芯編譯速度

發布時間: 2023-06-07 04:11:06

A. 解釋下龍芯

關於CPU和晶元,我們標準的操作系統,大約有350個C函數,這種操作系統叫標準的操作系統,IEEE

POSIX這就是標准操作系統的規范,但是事實上,美國很多軍方的CPU和工控,飛機製造和武器工業控制領域很多晶元是不支持這個標準的,比如軍隊的OpenRISC派系的晶元,只能支持大約100~150個標准C函數,當然了,剩下的200多個函數可以使用這個100多個函數來用軟體來實現,但是,這些用軟體實現的庫和函數,運行速度相當的慢。
實際上mips就是當年早期OpenRISC商業化的產物,但是Mips走的更遠,主要解決大規模並行的浮點數運算問題。mips是支持linux操作系統的,但是這個CPU只能順利的運行大約150個標準的操作系統的C函數。
現在C++標准庫STL一共又20個大類,超過了1000個函數或者模板實現,而boost庫(STL的升級版)有超過2000個復雜函數或者模板實現,這些函數如果在intel或者AMD的晶元上執行得到的結果,跟在arm上執行得到的結果很多都是不同的,尤其是執行效率問題,很多在arm上慢的要死,比java還要慢(現在安卓機主要使用java開發應用軟體,編譯器是使用J2SDK修改的編譯器)。蘋果公司在這方面有比較深入的研究。這個不細談。
如果這個C++函數在mips晶元上執行,這裡面有一多半是根本無法執行的,也就是說,會崩潰和異常退出。並且,J2SDK也是無法在mips上順利的執行的,相當的垃圾的一個晶元。
這就是為啥在美國9年代末期,mips被市場淘汰的根本原因。

B. 龍芯1b linux下 程序用什麼編譯執行

Linux下C程序的編輯,編譯和運行以及調試

要使用的工具:
編輯:vim(vi)
編譯和運行:gcc
調試:gdb

安裝很簡單(以下是以在CentOS中安裝為例):

1
yum vim gcc gdb

1.使用vim編輯源文件
首先,打開終端練下手:

1
vim hello.c

(進入一般模式)
按下"i",進入編輯模式,在編輯模式下輸入:

1
#include <stdio.h>

2
int main(){

3
printf("Hello, World!\n");

4
return 0;

5
}

輸入完成,按"ESC"鍵,回到一般模式,然後按下":wq",即可保存並退出vim。

附註:
在一般模式下,按下":%!xxd"查看hello.c的16進制形式,回到文本格式按下":%!xxd -r"。
查看hello.c的二進制形式,按下":%!xxd -b",這是hello.c保存在磁碟上的存儲狀態。
至此,在vim已完成C源文件的編輯。
關於vim的使用,直接上網搜索vim,相關的文章是相當多的;或者參考vim的聯機幫助,在命令行上鍵入"man vim"即可。

2.編譯和運行

gcc命令的基本用法:

1
gcc[options] [filenames]

其中,filenames為文件名;options為編譯選項
當不使用任何編譯選項編譯hello.c時,gcc將會自動編譯產生一個a.out的可執行文件:

1
[root@localhost c]# ls

2
hello.c

3
[root@localhost c]# gcc hello.c

4
[root@localhost c]# ls

5
a.out hello.c

執行:

1
[root@localhost c]# ./a.out

2
Hello, World!

使用-o編譯選擇,可以為編譯後的文件指定一個名字:

1
[root@localhost c]# ls

2
a.out hello.c

3
[root@localhost c]# gcc hello.c -o hello

4
[root@localhost c]# ls

5
a.out hello hello.c

執行:

1
[root@localhost c]# ./hello

2
Hello, World!

注意:使用-o選項時,-o後面必須跟一個文件名,即:-o outfile。

為了便於描述後面的選項,刪除hello和a.out可執行文件。

結合介紹gcc的編譯選項,分析hello.c的編譯和執行過程:
(1)預處理階段:使用-E選項,對輸入文件只做預處理不編譯。當使用這個選項時,預處理器的輸出被送到標准輸出而不是存儲到文件。如果想將預處理的輸出存儲到文件,可結合-o選項使用,使用如下:

1
[root@localhost c]# ls

2
hello.c

3
[root@localhost c]# gcc -E hello.c -o hello.i

4
[root@localhost c]# ls

5
hello.c hello.i

使用less查看下hello.i:

1
[root@localhost c]# less hello.i

(2)編譯階段:使用-S選項,將C程序編譯為匯編語言文件後停止編譯,gcc編譯產生匯編文件的默認後綴為.s。

1
[root@localhost c]# ls

2
hello.c hello.i

3
[root@localhost c]# gcc -S hello.c

4
[root@localhost c]# ls

5
hello.c hello.i hello.s

在gcc -S hello.c處,使用C源文件編譯,也可以用gcc -S hello.i的預處理文件編譯,結果一樣。

使用-S編譯時,也可以和-o結合使用指定編譯產生的匯編語言文件的名字:

1
[root@localhost c]# ls

2
hello.c hello.i hello.s

3
[root@localhost c]# gcc -S hello.i -o hello_s.s

4
[root@localhost c]# ls

5
hello.c hello.i hello.s hello_s.s

可使用less命令查看匯編代碼。

(3)匯編階段:使用-c選項,將C源文件或者匯編語言文件編譯成可重定向的目標文件(二進制形式),其默認後綴為.o。

1
[root@localhost c]# ls

2
hello.c hello.i hello.s hello_s.s

3
[root@localhost c]# gcc -c hello.s

4
[root@localhost c]# ls

5
hello.c hello.i hello.o hello.s hello_s.s

也可以和-o結合使用指定編譯產生的目標文件的名字:

1
[root@localhost c]# gcc -c hello.s -o hello.o

由於hello.o是二進制文件,使用less查看顯示為亂碼;

然後使用vim hello.o打開也顯示為亂碼,按下":%!xxd"查看其16進制形式,按下":%!xxd -r"退出 16進制查看模式,回到亂碼狀態。在退出vim時,若提示已經修改了文件,則使用":q!"強制退出。

(4)鏈接階段:鏈接器將可重定向的目標文件hello.o以及庫文件(如printf.o)執行並入操作,形成最終可執行的可執行目標文件。

1
[root@localhost c]# ls

2
hello.c hello.i hello.o hello.s hello_s.s

3
[root@localhost c]# gcc hello.o

4
[root@localhost c]# ls

5
a.out hello.c hello.i hello.o hello.s hello_s.s

可使用-o選項,指定輸出文件(即可執行目標文件)的名字:

1
[root@localhost c]# gcc hello.o -o hello

2
[root@localhost c]# ls

3
a.out hello hello.c hello.i hello.o hello.s hello_s.s

(5)執行階段:

1
[root@localhost c]# ./a.out

2
Hello, World!

3
[root@localhost c]# ./hello

4
Hello, World!

由此,看出前面使用的gcc hello.c -o
hello命令,將hello.c直接編譯為可執行的目標文件,中間經過於處理器的預處理階段(源文件到預處理文件),編譯器的編譯階段(預處理文件到匯
編文件),匯編器的匯編階段(匯編文件到可重定向的目標文件),鏈接器的鏈接階段(可重定向的目標文件到可執行的目標文件)。

還有其他的選項如下:
-Idir:dir是頭文件所在的目錄
-Ldir:dir是庫文件所在的目錄

-Wall:列印所有的警告信息
-Wl,options:options是傳遞給鏈接器的選項

編譯優化選項:-O和-O2
-O選項告訴GCC 對源代碼進行基本優化。這些優化在大多數情況下都會使程序執行的更快。-O2選項告訴GCC產生盡可能小和盡可能快的代碼。
-O2選項將使編譯的速度比使用-O時慢。但通常產生的代碼執行速度會更快。

除了-O和-O2優化選項外,還有一些低級選項用於產生更快的代碼。這些選項非常的特殊,而且最好只有當你完全理解這些選項將會對編譯後的代碼產生什麼樣的效果時再去使用。這些選項的詳細描述,請參考GCC的聯機幫助,在命令行上鍵入"man gcc"即可。

調試選項:-g(使用詳情見第3部分)
-g選項告訴GCC產生能被GNU調試器使用的調試信息以便調試你的程序。
即:在生成的目標文件中添加調試信息,所謂調試信息就是源代碼和指令之間的對應關系,在gdb調試和objmp反匯編時要用到這些信息。

3.調試
雖然GCC提供了調試選項,但是本身不能用於調試。Linux 提供了一個名為gdb的GNU調試程序。gdb是一個用來調試C和C++程序的調試器。它使你能在程序運行時觀察程序的內部結構和內存的使用情況。以下是gdb所提供的一些功能:
a.它使你能監視你程序中變數的值;
b.它使你能設置斷點以使程序在指定的代碼行上停止執行;
c.它使你能一行行的執行你的代碼。

(1)啟動gdb
在命令行上鍵入"gdb"並按回車鍵就可以運行gdb了,如下:

1
[root@localhost c]# gdb

2
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)

3
Copyright (C) 2010 Free Software Foundation, Inc.

4
License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.

5
There is NO WARRANTY, to the extent permitted by law. Type "show ing"

6
and "show warranty" for details.

7
This GDB was configured as "x86_64-redhat-linux-gnu".

8
For bug reporting instructions, please see:<>.

9
(gdb)

當啟動gdb之後,即可在命令行上輸入命令進行相關的調試操作。
也可以以下面的方式來啟動gdb:

1
[root@localhost c]# gdb hello

這種方式啟動gdb,直接將指定調試的程序文件裝載到調試環境中。也就是讓gdb裝入名稱為filename的可執行文件,從而准備調試。

了能夠進行調試,當前調試的程序文件中必須包含調試信息。其中調試信息包含程序中的每個變數的類型和其在可執行文件里的地址映射以及源代碼的行號,gdb
利用這些信息使源代碼和機器碼相關聯。因此在使用gcc編譯源程序的時候必須使用-g選項,以便將調試信息包含在可執行文件中。
例如:

1
[root@localhost c]# gcc -g hello.c -o hello

gdb還提供了其他的啟動選項,請參考gdb的聯機幫助。在命令行上鍵入"man gdb"並回車即可。

(2)gdb基本命令
<1>單步執行和跟蹤函數調用
程序編輯如下:

01
#include <stdio.h>

02
int add_range(int low, int high){

03
int i;

04
int sum;

05
for(i = low; i <= high; i++){

06
sum = sum + i;

07
}

08
return sum;

09
}

10

11
int main(){

12
int result[100];

13
result[0] = add_range(1, 10);

14
result[1] = add_range(1, 100);

15
printf("result[0] = %d\nresult[1] = %d\n", result[0], result[1]);

16
return 0;

17

18
}

編譯和運行如下:

1
[root@localhost gdb_demo]# vim test1.c

2
[root@localhost gdb_demo]# gcc test1.c -o test1

3
[root@localhost gdb_demo]# ls

4
test1 test1.c

5
[root@localhost gdb_demo]# ./test1

6
result[0] = 55

7
result[1] = 5105

熱點內容
編程題解析 發布:2025-02-12 08:40:30 瀏覽:453
bilibi手機緩存目錄在 發布:2025-02-12 08:33:11 瀏覽:457
聽ti密碼是多少 發布:2025-02-12 08:22:15 瀏覽:288
淘寶上傳視頻憑證 發布:2025-02-12 08:06:46 瀏覽:878
java畫 發布:2025-02-12 08:01:00 瀏覽:549
光遇安卓官服是在哪裡下載 發布:2025-02-12 07:47:47 瀏覽:648
安卓手機如何關閉程序打開廣告 發布:2025-02-12 07:31:06 瀏覽:469
新版影視大全不能緩存 發布:2025-02-12 07:31:04 瀏覽:976
sql兩個欄位in 發布:2025-02-12 07:29:45 瀏覽:771
漂亮網站源碼 發布:2025-02-12 07:26:40 瀏覽:760