導航:首頁 > 源碼編譯 > amd有自己的編譯器

amd有自己的編譯器

發布時間:2023-05-25 11:18:32

1. 學c語言用電腦編程,或運行相關編譯器等軟體,所用電腦必須用intel的處理器嗎

ss。一般ASP搭配Access,PHP搭配MySql。
PHP是比較古老的語言了,ASP也是五六年前很流行的,這兩年比較流行的是java和Asp.net,不過學Java比較多人要,Asp.net開發起來會相對簡單一點,但現在Java也封裝得很好,有利於開發。關於學什麼,就自己興趣所在了。
我也是計算機專業的,雖然覺得不怎樣,但總算有過這幾年經驗。關於如何學一門語言,我認為,不要只看書,要看書然後動手,最好自己找個項目來做,做項目需要什麼,就看什麼,邊學邊做,這樣一來有興趣,二來可以學到東西。但是若一點都不懂的話項目也是做不下去的,所以呢,最好找兩本好一點的書,先瀏覽性過一遍,然後再相對較詳細的看一遍,這樣起碼對這門知識有點了解,以後做的時候找相應的知識也容易一點。
最後回答你的第一個和第二個問題:1.那些不用記下來,要看懂,要知道結構,比如If...else;for,while之類的,知道那些是表達什麼樣的結構。這些東西,邊用邊學慢慢就全知道了,背下來一點用都沒有。
2.不一樣的概念。這里的函數只是把一些經常用到的語句寫在一起,方便調用。這些慢慢體會。
個人經驗,回答完畢。

2. 像intel和AMD需要對cpu編程嗎用的是匯編嗎cpu裡面有編譯器嗎

據說是傳說中的硬體編程……編譯器肯定是沒有了,因為CPU收到的代碼已經是最低級的機器碼了,不需要再進行編譯……

3. linux amd64中的amd是什麼意思 啊

amd是AMD公司的意思。而AMD64,又稱「x86-64」或「x64」,是一種64位元的電腦處理器架構。

AMD64是建基於現有32位元的x86架構,由AMD公司所開發,應用AMD64指令集的自家產品有Athlon64、Athlon64 FX、Athlon64X2、Turion 64、Opteron及最新的Sempron處理器。

linuxAMD64也就是64位的linux系統,並不是指AMD的cpu專用的,只要是支持64位的cpu都可以裝

(3)amd有自己的編譯器擴展閱讀:

AMD試圖使用自家的AMD64指令集來清理Intel的x86-32獨占產品,並將x86更新到近似領先的RISC環境。 參與DEC Alpha 64位處理器設計的Dirk Meyer也參與了AMD64規范的開發,並且AMD的許多員工都是前Alpha處理器數衫凳工程師,因此為AMD64做出了很大貢獻。

AMD64表明AMD放棄了慣用的遵循英特爾標準的風格,並選擇將x86架構擴展為64位版本,例如將16位Intel 8086擴展為32位80386,並且與原始版本兼容。塌歲

AMD64體系結薯旅構在IA-32上添加了64位寄存器,並且與早期的16位和32位軟體兼容,這可以使現有的基於x86的編譯器輕松轉換為AMD64版本。

4. INTEL和AMD哪個更適合編程

我感覺如果是與圖形無關的編程, amd更加適合, 畢竟核心跟主頻就放這. 反正我開發可能打開的東西比較多, 而且運行得項目也很多, 編譯的時候真得恨不得拿伺服器來開發, 把顯卡扔了. 我主要是做java開發得, 多線程編譯的時候, 區別就出來了. 特別是後端仔,需要運行各種環境主要還是跟線程數,硬碟速度,內存大小關系比較大

編程不存在CPU好壞之分。

以前的機器代碼是各有各的定義,你學了這個CPU的指令集,到另一個版本的CPU,不一定通用。這時,就存在你熟悉的CPU是最好的(並非CPU本身自身的好壞)。現在的CPU從設計上,具有統一的規范,比如我們通常看到的AMD、INTEL和ARM等,他們的技術文章,都是介紹這種CPU支持某某指令集,如SSE指令集。也就是只要支持該指令集,它的機器碼就是一致的。對編程來說,就無所謂好壞,甚至是否熟悉的問題了。

intel游戲環境生態好,各種游戲都有很好的優化,AMD推土機時代CPU太拉胯,性能弱功耗高小毛病多,游戲環境生態差。隨著銳龍出來,AMD性能提升巨大,單核弱多核已經吊打對手,發展到三代AMD無論單核多核都比intel強,程序員對CPU性能要求高,所以AMD更加有效率。而很多老游戲對AMD的優化不好,所以游戲還是沒intel強

5. 蘋果電腦支持armamd

是的,蘋果電腦已經開始推出採用ARM架構的晶元,稱之為Apple M1晶元。這個晶元是由蘋果自主廳伏逗設計,並集成在新扮賣款MacBook Air、MacBook Pro和Mac mini等設備上。ARM架構的晶元與傳統的x86架構相比,更加節能、高效並且更加自由。因此,廳鋒可以預計未來的蘋果電腦將繼續支持ARM架構,並不斷發展和完善。

6. 支持C99編譯器

AMD x86 Open64 Compiler Suite Mostly Has C99 support equal to that of GCC.[1]
Ch Partial Supports major C99 features.[2]
Clang Mostly Does not support C99 floating-point pragmas.[3]
GCC Mostly As of January 2011[update] and GCC 4.5, 12 features suffer library issues, 1 feature is broken and 6 are missing. 43 C99 features have been completely implemented, however many features still remain unimplemented.[4]
Intel C++ compiler Mostly long double is not supported.
Open Watcom Partial Implements the most-used parts of the standard. However, they are enabled only through an undocumented command-line switch.[5]
Pelles C Mostly Supports most C99 features.
Portable C compiler Partial Working towards becoming C99-compliant.
Sun Studio Full[6]
Tiny C Compiler Mostly Does not support complex numbers or variable length arrays.[7] The developers state that "TCC is heading toward full ISOC99 compliance".[8]
IBM C for AIX, V6 [9]and XL C/C++ V11.1 for AIX [10] ?
IBM Rational logiscope Full Until Logiscope 6.3, only basic constructs of C99 were supported. C99 is officially supported in Logiscope 6.4 and later versions.[11]
Microsoft Visual Studio No As of Visual Studio 2010, there are no plans to support C99.[12][13]

看上面的支持列表,完全支持C99的只有Sun Studio和IBM Rational logiscope,
VC直到2010都沒有計劃支持C99。
補充:
在C99中包括的特性有:
對編譯器限制增加了,比如源程序每行要求至少支持到 4095 位元組,變數名函數名的要求支持到 63 位元組 (extern 要求支持到 31)
預處理增強了。例如:
宏支持取參數 #define Macro(...) __VA_ARGS__
使用宏的時候,參數如果不寫,宏里用 #,## 這樣的東西會擴展成空串。(以前會出錯的)
支持 // 行注釋(這個特性實際上在C89的很多編譯器上已經被支持了)
增加了新關鍵字 restrict, inline, _Complex, _Imaginary, _Bool
支持 long long, long double _Complex, float _Complex 這樣的類型
支持 <: :> <% %> %: %:%: ,等等奇怪的符號替代,D&E 里提過這個
支持了不定長的數組。數組的長度就可以用變數了。聲明類型的時候呢,就用 int a[*] 這樣的寫法。不過考慮到效率和實現,這玩意並不是一個新類型。所以就不能用在全局裡,或者 struct union 裡面,如果你用了這樣的東西,goto 語句就受限制了。
變數聲明不必放在語句塊的開頭,for 語句提倡這么寫 for(int i=0;i <100;++i) 就是說,int i 的聲明放在裡面,i 只在 for 裡面有效。(VC沒有遵守這條標准,i 在 for 外也有效)
當一個類似結構的東西需要臨時構造的時候,可以用 (type_name){xx,xx,xx} 這有點像 C++ 的構造函數
初始化結構的時候現在可以這樣寫:
struct {int a[3], b;} hehe[] = { [0].a = {1}, [1].a = 2 };
struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是對 .c,.d 賦值的
字元串裡面,\u 支持 unicode 的字元
支持 16 進制的浮點數的描述
所以 printf scanf 的格式化串多支持了 ll / LL (VC6 里用的 I64) 對應新的 long long 類型。
浮點數的內部數據描述支持了新標准,這個可以用 #pragma 編譯器指定
除了已經有的 __line__ __file__ 以外,又支持了一個 __func__ 可以得到當前的函數名
對於非常數的表達式,也允許編譯器做化簡
修改了對於 / % 處理負數上的定義,比如老的標准里 -22 / 7 = -3, -22 % 7 = -1 而現在 -22 / 7 = -4, -22 % 7 = 6
取消了不寫函數返回類型默認就是 int 的規定
允許 struct 定義的最後一個數組寫做 [] 不指定其長度描述
const const int i; 將被當作 const int i; 處理
增加和修改了一些標准頭文件, 比如定義 bool 的 <stdbool.h> 定義一些標准長度的 int 的 <inttypes.h> 定義復數的 <complex.h> 定義寬字元的 <wctype.h> 有點泛型味道的數學函數 <tgmath.h> 跟浮點數有關的 <fenv.h> 。 <stdarg.h> 里多了一個 va_ 可以復制 ... 的參數。 <time.h> 里多了個 struct tmx 對 struct tm 做了擴展
輸入輸出對寬字元還有長整數等做了相應的支持
相對於c89的變化還有
1、增加restrict指針
C99中增加了公適用於指針的restrict類型修飾符,它是初始訪問指針所指對象的惟一途徑,因此只有藉助restrict指針表達式才能訪問對象。restrict指針指針主要用做函數變元,或者指向由malloc()函數所分配的內存變數。restrict數據類型不改變程序的語義。
如果某個函數定義了兩個restrict指針變元,編譯程序就假定它們指向兩個不同的對象,memcpy()函數就是restrict指針的一個典型應用示例。C89中memcpy()函數原型如下:
代碼: void *memcpy (void *s1, const void *s2, size_t size);
如果s1和s2所指向的對象重疊,其操作就是未定義的。memcpy()函數只能用於不重疊的對象。C99中memcpy()函數原型如下:代碼: void *memcpy(void *restrict s1, const void *restrict s2,size_t size);
通過使用restrict修飾s1和s2 變元,可確保它們在該原型中指向不同的對象。
2、inline(內聯)關鍵字
內聯函數除了保持結構化和函數式的定義方式外,還能使程序員寫出高效率的代碼.函數的每次調用與返回都會消耗相當大的系統資源,尤其是當函數調用發生在重復次數很多的循環語句中時.一般情況下,當發生一次函數調用時,變元需要進棧,各種寄存器內存需要保存.當函數返回時,寄存器的內容需要恢復。如果該函數在代碼內進行聯機擴展,當代碼執行時,這些保存和恢復操作旅遊活動會再發生,而且函數調用的執行速度也會大大加快。函數的聯機擴展會產生較長的代碼,所以只應該內聯對應用程序性能有顯著影響的函數以及長度較短的函數
3、新增數據類型
_Bool
值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾 <stdbool.h> ,以便程序員能夠編寫同時兼容於C與C++的應用程序。在編寫新的應用程序時,應該使用
<stdbool.h> 頭文件中的bool宏。
_Complex and _Imaginary
C99標准中定義的復數類型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary.
<complex.h> 頭文件中定義了complex和imaginary宏,並將它們擴展為_Complex和_Imaginary,因此在編寫新的應用程序時,應該使用 <stdbool.h> 頭文件中的complex和imaginary宏。
long long int
C99標准中引進了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64 - 1)。long long int能夠支持的整數長度為64位。
4、對數組的增強
可變長數組
C99中,程序員聲明數組時,數組的維數可以由任一有效的整型表達式確定,包括只在運行時才能確定其值的表達式,這類數組就叫做可變長數組,但是只有局部數組才可以是變長的.
可變長數組的維數在數組生存期內是不變的,也就是說,可變長數組不是動態的.可以變化的只是數組的大小.可以使用*來定義不確定長的可變長數組。
數組聲明中的類型修飾符
在C99中,如果需要使用數組作為函數變元,可以在數組聲明的方括弧內使用static關鍵字,這相當於告訴編譯程序,變元所指向的數組將至少包含指定的元素個數。也可以在數組聲明的方括弧內使用restrict,volatile,const關鍵字,但只用於函數變元。如果使用restrict,指針是初始訪問該對象的惟一途徑。如果使用const,指針始終指向同一個數組。使用volatile沒有任何意義。
5、單行注釋
引入了單行注釋標記 "// " , 可以象C++一樣使用這種注釋了。
6、分散代碼與聲明
7、預處理程序的修改
a、變元列表
宏可以帶變元,在宏定義中用省略號(...)表示。內部預處理標識符__VA_ARGS__決定變元將在何處得到替換。例:#define MySum(...) sum(__VA_ARGS__) 語句MySum(k,m,n);
將被轉換成:sum(k, m, n); 變元還可以包含變元。例: #define compare(compf, ...) compf(__VA_ARGS__) 其中的compare(strcmp, "small ", "large "); 將替換成:strcmp( "small ", "large ");
b、_Pragma運算符
C99引入了在程序中定義編譯指令的另外一種方法:_Pragma運算符。格式如下:
_Pragma( "directive ")
其中directive是要滿打滿算的編譯指令。_Pragma運算符允許編譯指令參與宏替換。
c、內部編譯指令
STDCFP_CONTRACT ON/OFF/DEFAULT 若為ON,浮點表達式被當做基於硬體方式處理的獨立單元。默認值是定義的工具。
STDCFEVN_ACCESS ON/OFF/DEFAULT 告訴編譯程序可以訪問浮點環境。默認值是定義的工具。
STDC CX_LIMITED_RANGE ON/OFF/DEFAULT 若值為ON,相當於告訴編譯程序某程序某些含有復數的公式是可靠的。默認是OFF。
d、新增的內部宏
__STDC_HOSTED__ 若操作系統存在,則為1
__STDC_VERSION__ 199991L或更高。代表C的版本
__STDC_IEC_599__ 若支持IEC 60559浮點運算,則為1
__STDC_IEC_599_COMPLEX__ 若支持IEC 60599復數運算,則為1
__STDC_ISO_10646__ 由編譯程序支持,用於說明ISO/IEC 10646標準的年和月格式:yyymmmL
9、復合賦值
C99中,復合賦值中,可以指定對象類型的數組、結構或聯合表達式。當使用復合賦值時,應在括弧內指定類型,後跟由花括弧圍起來的初始化列表;若類型為數組,則不能指定數組的大小。建成的對象是未命名的。
例: double *fp = (double[]) {1.1, 2.2, 3.3};
該語句用於建立一個指向double的指針fp,且該指針指向這個3元素數組的第一個元素。 在文件域內建立的復合賦值只在程序的整個生存期內有效。在模塊內建立的復合賦值是局部對象,在退出模塊後不再存在。
10、柔性數組結構成員
C99中,結構中的最後一個元素允許是未知大小的數組,這就叫做柔性數組成員,但結構中的柔性數組成員前面必須至少一個其他成員。柔性數組成員允許結構中包含一個大小可變的數組。sizeof返回的這種結構大小不包括柔性數組的內存。包含柔性數組成員的結構用malloc()函數進行內存的動態分配,並且分配的內存應該大於結構的大小,以適應柔性數組的預期大小。

11、指定的初始化符
C99中,該特性對經常使用稀疏數組的程序員十分有用。指定的初始化符通常有兩種用法:用於數組,以及用於結構和聯合。用於數組的格式:[index] = vol; 其中,index表示數組的下標,vol表示本數組元素的初始化值。
例如: int x[10] = {[0] = 10, [5] = 30}; 其中只有x[0]和x[5]得到了初始化.用於結構或聯合的格式如下:
member-name(成員名稱)
對結構進行指定的初始化時,允許採用簡單的方法對結構中的指定成員進行初始化。
例如: struct example{ int k, m, n; } object = {m = 10,n = 200};
其中,沒有初始化k。對結構成員進行初始化的順序沒有限制。
12、printf()和scanf()函數系列的增強
C99中printf()和scanf()函數系列引進了處理long long int和unsigned long long int數據類型的特性。long long int 類型的格式修飾符是ll。在printf()和scanf()函數中,ll適用於d, i, o, u 和x格式說明符。另外,C99還引進了hh修飾符。當使用d, i, o, u和x格式說明符時,hh用於指定char型變元。ll和hh修飾符均可以用於n說明符。
格式修飾符a和A用在printf()函數中時,結果將會輸出十六進制的浮點數。格式如下:[-]0xh, hhhhp + d 使用A格式修飾符時,x和p必須是大寫。A和a格式修飾符也可以用在scanf()函數中,用於讀取浮點數。調用printf()函數時,允許在%f說明符前加上l修飾符,即%lf,但不起作用。
13、C99新增的庫
C89中標準的頭文件
<assert.h> 定義宏assert()
<ctype.h> 字元處理
<errno.h> 錯誤報告
<float.h> 定義與實現相關的浮點值勤
<limits.h> 定義與實現相關的各種極限值
<locale.h> 支持函數setlocale()
<math.h> 數學函數庫使用的各種定義
<setjmp.h> 支持非局部跳轉
<signal.h> 定義信號值
<stdarg.h> 支持可變長度的變元列表
<stddef.h> 定義常用常數
<stdio.h> 支持文件輸入和輸出
<stdlib.h> 其他各種聲明
<string.h> 支持串函數
<time.h> 支持系統時間函數
C99新增的頭文件和庫
<complex.h> 支持復數演算法
<fenv.h> 給出對浮點狀態標記和浮點環境的其他方面的訪問
<inttypes.h> 定義標準的、可移植的整型類型集合。也支持處理最大寬度整數的函數
<iso646.h> 首先在此1995年第一次修訂時引進,用於定義對應各種運算符的宏
<stdbool.h> 支持布爾數據類型類型。定義宏bool,以便兼容於C++
<stdint.h> 定義標準的、可移植的整型類型集合。該文件包含在 <inttypes.h> 中
<tgmath.h> 定義一般類型的浮點宏
<wchar.h> 首先在1995年第一次修訂時引進,用於支持多位元組和寬位元組函數
<wctype.h> 首先在1995年第一次修訂時引進,用於支持多位元組和寬位元組分類函數
14、__func__預定義標識符
用於指出__func__所存放的函數名,類似於字元串賦值。
15、其它特性的改動
放寬的轉換限制
限制 C89標准 C99標准
數據塊的嵌套層數 15 127
條件語句的嵌套層數 8 63
內部標識符中的有效字元個數 31 63
外部標識符中的有效字元個數 6 31
結構或聯合中的成員個數 127 1023
函數調用中的參數個數 31 127

不再支持隱含式的int規則
刪除了隱含式函數聲明
對返回值的約束
C99中,非空類型函數必須使用帶返回值的return語句.
擴展的整數類型
擴展類型 含義
int16_t 整數長度為精確16位
int_least16_t 整數長度為至少16位
int_fast32_t 最穩固的整數類型,其長度為至少32位
intmax_t 最大整數類型
uintmax_t 最大無符號整數類型
對整數類型提升規則的改進
C89中,表達式中類型為char,short int或int的值可以提升為int或unsigned int類型.
C99中,每種整數類型都有一個級別.例如:long long int 的級別高於int, int的級別高於char等.在表達式中,其級別低於int或unsigned int的任何整數類型均可被替換成int或unsigned int類型.
但是各個公司對C99的支持所表現出來的興趣不同。當GCC和其它一些商業編譯器支持C99的大部分特性的時候,微軟和Borland卻似乎對此不感興趣。

7. 下軟體是下arm64還是x64

x64
第一、cpu配套內存訪問速度,這方面x86速度肯定更快。32位C編譯器編譯C函數時候調用使用內存棧傳遞褲磨世參數,因為內存訪問速度已經夠快,再加上cpu高速緩存,運行速度能再上一個台階。而ARM的ram是和CPU在一起的,更多考慮了功耗等問題。ram訪問速度更慢,但作為補償C程序函數的調用約定是在32位模式中用4個寄存器傳遞前4個32位參數數據,在64位模式中用8個寄存器傳遞前8個64位參數數據
第二、寄存器數量,這方面arm寄存器比x86寄存器更多,這對C程序的編譯會更友好一些
第三、關於GPU,arm晶元都是和GPU一起的,為的是減少功耗,x86要看規格和廠商,比如筆記本晶元大多帶集成GPU,而台式機可能就沒有
第四、其他類似simd指令功能使用很不一樣,相對來說arm規范很多游李,而x86的simd會更糟糕,x86的simd是16位元組對齊,而arm的simd是4位元組對齊。再比如:x86的simd整數乘法會增長數據長度,至少sse2指令集是如此的胡肢,而arm的乘法根據不同指令自己選擇。

8. AMD是什麼意思

AMD即由AMD公司生產的處理器。AMD( 超微半導體 ) 成立於 1969 年,總部位於加利福尼亞州桑尼維爾,AMD是唯一能與英特爾抗衡的CPU廠商,旗下的獨立顯卡部門也和NVIDIA平分天下。

AMD 公司專門為計算機、通信和消費電子行業設計和製造各種創新的微處理器、快閃記憶體和低功率處理器解決方案。

AMD在全球各地設有業務機構, 在美國、中國、德國、日本、馬來西亞、新此尺伍加坡和泰國困伍設有製造工廠,並在全球各大主要城市設有銷售辦事處,擁有超過 1.6萬名員工。

中國前景

作為全球經濟發展速度最快的國家之一,中國日益成為 AMD 全球戰略重點之一。AMD 首開先河推出了高性能和無縫移植 32 位、 64 位計算優勢的技術;在合作夥伴的支持下, AMD 率先在中國市場推出 64 位計算。 2005 年, AMD 再開行業之先河,推出了雙核處理器。

AMD 的客戶及業務夥伴已遍布中國,覆蓋科研、教育、電信、氣象、石油勘探等行業, AMD 的產品受到了中國市場與用戶的廣泛肯定森或 。在中國, AMD 已與眾多 OEM 廠商建立聯盟,其中包括聯想、清華紫光、曙光、方佳、中科夢蘭 等中國公司,以及 HP 、 IBM 、 Sun 等全球領先的計算機製造商。

9. 請問學x86匯編語言用什麼編譯器

編譯器自舉!搜索這個關鍵字
程序都是編譯器編譯的。這個是肯定的
至於第一款X語言編譯器是不是直接1010101010自己寫的那就不知道啦

一般開發編譯器的話。有兩條路選擇
1.利用yacc(或者其變種)&lex(詞法分析)-等工具自己生成語法模板
詞法語法都可以使用這些工具自己生成
然後自己編寫生成的中間碼和生成的機器碼就可以了
一般做編譯原理類似試驗都是如此的。許多編譯器也的確是這樣

2.自己寫詞法分析和語法分析。可以參考一些開源的編譯器
lcc-這個是ANSI C99標準的編譯器是開源的
或者nasm,watcom等編譯器到上不少開源的編譯器

總的來說。高級語言編譯器比較難寫
如果想快速寫出一個的話
可以採用第一種做法。利用工具生成語法詞法模板
先寫一個簡單的匯編編譯器比較簡單
開源的有nasm,jwasm(支持masm語法開源的編譯器)

fasm(這款編譯器是自舉的.就是自己可以編譯自己),

剩下的就是自己做好語言規則關鍵字map
引用高手的話。語言map做好了你的編譯器也做好一半了
剩下的都是機械性的工作了。
生成x86或者arm指令。

優化工作這個很難解釋.根據你所需要的做吧
畢竟可以做出一個無錯,又XX的編譯器已經很難得

你可以選擇使用現有的編譯器開發自己的編譯器
然後等到你的編譯器支持相當數量指令和成熟度的時候
使用自己的語法重新寫一遍編譯器.
這樣你就可以用自己的編譯器開發自己的編譯器了(是不是很邪惡?)

另外舉幾個例子
Delphi的編譯器是C++ Builder開發的。
而C++ Builder的IDE是Delphi開發的
C++ Builder的編譯器是C++ Builder開發的-這個就是編譯器自舉了。。Delphi和C++ Builder共享一個後端化優化器。
Delphi 早期的版本的編譯器是tasm直接編譯的。可見Anders的匯編功力多強悍(Anders也就是後來VJ++,C#,.NET工程的核心架構師.最關鍵的靈魂級人物)

VC++的編譯器是VC++開發的。很明顯這都說明了編譯器自舉
自己開發自己。如果一個編譯器可以做到自己編譯自己。那基本上就可以實現任何功能了。

關於編譯器開發的書籍可以看一下
龍書《編譯原理(第二版)》
虎書《現代編譯原理-C語言描述》
鯨書《高級編譯器設計與實現》
建議從鯨書看起。然後是龍書
再來是虎書--虎書裡面描述了許多現代編譯器(正如其名)技術
例如面向對象啦,優化,垃圾回收等等.
鯨書看完基本上就可以實現一個簡單的Tiny C編譯器了
然後在龍書鞏固,讀一下語言規范,自己看一些開源的匯編編譯器代碼
自己就可以嘗試做一個匯編語言編譯器了.等到技術提高了
在嘗試做一些高級語法識別,參考LCC代碼做一下ANSI C99的
C語言編譯器。再來就看你自己的興趣和領悟度拉
如果想支持C++的話就得要對編譯器做許多方便的研究

類似Java那種跨平台或者Ruby,Python等動態語言
虎書中也有描述。當然看自己功力了

閱讀全文

與amd有自己的編譯器相關的資料

熱點內容
下班之後的程序員 瀏覽:71
檢測支持ssl加密演算法 瀏覽:341
衢州發布新聞什麼APP 瀏覽:83
中國移動長沙dns伺服器地址 瀏覽:249
wifi密碼加密了怎麼破解嗎 瀏覽:596
linux命令cpu使用率 瀏覽:67
linux實用命令 瀏覽:238
傳奇引擎修改在線時間命令 瀏覽:109
php取域名中間 瀏覽:897
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:515
csgo您已被禁用此伺服器怎麼辦 瀏覽:398