PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
erickx
Basic Member
 

加入日期: Aug 2001
文章: 16
引用:
作者shukae
我不認為C算是高階語言
因為C的做法只是把一些組合語言指令給包裝起來成一個指令
而且包裝也不會太複雜, 大多翻譯成組合語言也沒幾個指令
比其起他的高階語言來說, C算是非常接近組合語言的說


C 是一種高階語言…
你的觀念太狹窄了… C 語言的應用不是只有用在 Intel x86 的 CISC CPU 系統…
在 RISC 系統或是其他一些微型化的 CPU 上也是有 C 語言存在的…
當然就不是幾個組合語言就做的完一個指令...

基本上要稱為低階語言… 要程式語言本身可造出 CPU 的每個單一opcode,
就我所知一般只有組合語言及機器碼(如果你夠強的話…) 可以做的到…

另 Linux 是架構在硬體抽像層 (Hardware Abstraction Layer) 上, 來達到平台移植
,詳細的找找 Google 應該就有資料了...
     
      
舊 2005-10-10, 10:31 PM #21
回應時引用此文章
erickx離線中  
藍鯨
Advance Member
 

加入日期: Jan 2002
文章: 437
引用:
作者shukae
Linux是用GCC寫的

GCC不是語言...

說真的我比較贊同"因為有人寫"= =
Windows也曾經可以在Alpha平台上執行,
現在也有IA64的版本, 這只是跟策略有關...
Linux的開發者多, 移植的人多而已.
舊 2005-10-11, 12:51 AM #23
回應時引用此文章
藍鯨離線中  
ABBACHEN
Regular Member
 

加入日期: Jan 2005
文章: 90
引用:
作者shukae
因為有不同的compile可以轉換kernel指令碼
所以跑起來是ok的


Linux是用GCC寫的
只是把組合語言稍微包裝過而已
其實稱不上是高階語言



1.LINUX 已經不是完全用 C 來寫,不少地方是用 C++
2.C 很早以前,就已經定位,算是高階語言
3.LINUX 版本眾多,也有用其他版本 C/C++ compile 的 LINUX
4.LINUX <---請用大寫
5.LINUX 只是其中一種 LIKE UNIX SYSTEM
舊 2005-11-28, 11:10 PM #24
回應時引用此文章
ABBACHEN離線中  
kukulcan
Regular Member
 

加入日期: Aug 2003
文章: 82
引用:
作者ABBACHEN
1.LINUX 已經不是完全用 C 來寫,不少地方是用 C++
2.C 很早以前,就已經定位,算是高階語言
3.LINUX 版本眾多,也有用其他版本 C/C++ compile 的 LINUX
4.LINUX <---請用大寫
5.LINUX 只是其中一種 LIKE UNIX SYSTEM


What!!!!
Linux Kernel 有用到 C++? 講笑話阿∼!
怎麼可能!!!
不要亂講騙人!!!

另外,依照正確的說法,這套作業系統應該稱之為GNU/Linux,如果你稱Linux 就是只 Kernel本身。

另外,沒聽過 LIKE UNIX SYSTEM,正常人都是說 "Unix Like System"。

很抱歉,我再次重申,目前官方版本的Linux Kernel都沒有使用C++。你知道在Kernel內使用C++的含意嗎?Linux連MicroKernel都沒有了,還敢用C++ !!!
舊 2005-11-29, 02:36 AM #25
回應時引用此文章
kukulcan離線中  
以月為影
Senior Member
 

加入日期: Nov 2002
文章: 1,414
長江後浪推前浪...這問題真深奧
舊 2005-11-29, 02:47 AM #26
回應時引用此文章
以月為影離線中  
kukulcan
Regular Member
 

加入日期: Aug 2003
文章: 82
引用:
作者nagual
對於一般應用程式來說, Linux Kernel所提供的System Call是一致的, 不會對
不同的機器而有所不同, 這個部份用一致的interface來達成machine independent.

但是, Linux kernel也有machine dependent的code, 很多是由組合語言寫成,
但這都是低階的部份, 最後還是會用同一種interface把這些不同的地方, 包裝起來,
因此一般的應用程式發展者, 或者甚至驅動程式發展者, 都能用同樣的System
Call和Function Call.

Linux能在很多機器上跑, 就是有人把低階不同的部份, 去實作出一致的
interface/function call. That's all.



主要的關鍵是在於 Linux Kernel SourceCode 內的 arch/
不過官方的 Code大都只完整支援i386 ia64 amd64 等個人電腦見得到的architecture。但是仍有廠商願意針對奇怪的cpu寫出這些低階的code

for example:
ftp://ftp.arm.linux.org.uk/pub/linu...21-rmk1-pxa1.gz
這是intel 針對 xscale PXA270 cpu所寫的 patch,目的在針對 PXA270 在Kernel 2.4.21上面的Support
http://www.intel.com/design/embedde...sors/302302.htm

另外 RMK也寫了一堆對於 ARM7 ARM9的支援程式碼。

真的要討論Machine dependent code,最明顯的範例就是關於"開機程序"的程式碼,這絕對是因為不同機器而有不同的程序。

這邊有一個網站文件,專講 i386的 boot
http://www.tldp.org/HOWTO/Linux-i38...OWTO/index.html

關於Setup.S boot.S 這真的都是到 ASM Level了....
舊 2005-11-29, 02:47 AM #27
回應時引用此文章
kukulcan離線中  
玉面飛龍至尊寶
*停權中*
 
玉面飛龍至尊寶的大頭照
 

加入日期: Nov 2005
文章: 83
引用:
作者rakuentw
YES ......C 當然是高階語言


我只知道
高階語言:接近人類的日常用語、易學習
低階語言:接近電腦內部用語、不易學習但執行效率較高
高階是用類似人類口語來寫,低階語言是電腦才看的懂的語言也就是只有1和0的世界

舊 2005-11-29, 03:46 AM #28
回應時引用此文章
玉面飛龍至尊寶離線中  
capitalm
Major Member
 
capitalm的大頭照
 

加入日期: Jun 2003
您的住址: where the light is
文章: 271
引用:
作者kukulcan
很抱歉,我再次重申,目前官方版本的Linux Kernel都沒有使用C++。你知道在Kernel內使用C++的含意嗎?Linux連MicroKernel都沒有了,還敢用C++ !!!


有沒有用 C++ 和 microkernel 一點關係都沒有
microkernel 是一種 kernel 的架構,C++是一種程式語言

在 kernel 裡面用 C++ 可能會造成的問題是
如果你用上 C++ 的 Inheritance 及 overloading、virtual function 等 oop 方法
可能會造成 compile 及 runtime 效能比較差,但也就僅此而已
就可行性上是沒有任何問題的
有興趣可以參考 http://www.invalidsoftware.net/os/?the_id=11

還有要在 linux kernel 加上 C++ code 會讓專案管理變複雜
但是也不是不可行的,反正 compile 之後都是 binary

此文章於 2005-11-29 04:20 AM 被 capitalm 編輯.
舊 2005-11-29, 04:17 AM #29
回應時引用此文章
capitalm離線中  
totorochen
Master Member
 

加入日期: Oct 2001
文章: 2,010
引用:
作者shukae
我不認為C算是高階語言
因為C的做法只是把一些組合語言指令給包裝起來成一個指令
而且包裝也不會太複雜, 大多翻譯成組合語言也沒幾個指令
比其起他的高階語言來說, C算是非常接近組合語言的說

阿凱
C語言雖然具備處理低階語言的能力,但它依然算是高階語言喔
因為它具備高階語言的特性
嚴格來說C語言是"最低階"的高階語言,但絕對不是低階語言
還有就是組合語言我大學時代寫了快兩年,我真的不覺得C語言接近組合語言
真要說接近,Pascal跟C語言比較接近,所以不少學校都是先教Pascal再教C語言
舊 2005-11-29, 04:42 AM #30
回應時引用此文章
totorochen離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是01:42 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。