PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   想問個關於linux的問題.. (https://www.pcdvd.com.tw/showthread.php?t=547019)

erickx 2005-10-10 10:31 PM

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


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

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

另 Linux 是架構在硬體抽像層 (Hardware Abstraction Layer) 上, 來達到平台移植
,詳細的找找 Google 應該就有資料了...

藍鯨 2005-10-11 12:51 AM

引用:
作者shukae
Linux是用GCC寫的

GCC不是語言...

說真的我比較贊同"因為有人寫"= =
Windows也曾經可以在Alpha平台上執行,
現在也有IA64的版本, 這只是跟策略有關...
Linux的開發者多, 移植的人多而已.

ABBACHEN 2005-11-28 11:10 PM

引用:
作者shukae
因為有不同的compile可以轉換kernel指令碼
所以跑起來是ok的 :p


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



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

kukulcan 2005-11-29 02:36 AM

引用:
作者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:47 AM

長江後浪推前浪...這問題真深奧

kukulcan 2005-11-29 02:47 AM

引用:
作者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 03:46 AM

引用:
作者rakuentw
YES ......C 當然是高階語言


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

:laugh: :laugh: :laugh: :laugh:

capitalm 2005-11-29 04:17 AM

引用:
作者kukulcan
很抱歉,我再次重申,目前官方版本的Linux Kernel都沒有使用C++。你知道在Kernel內使用C++的含意嗎?Linux連MicroKernel都沒有了,還敢用C++ !!!


有沒有用 C++ 和 microkernel 一點關係都沒有 :unbelief:
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

totorochen 2005-11-29 04:42 AM

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

阿凱
C語言雖然具備處理低階語言的能力,但它依然算是高階語言喔
因為它具備高階語言的特性
嚴格來說C語言是"最低階"的高階語言,但絕對不是低階語言
還有就是組合語言我大學時代寫了快兩年,我真的不覺得C語言接近組合語言
真要說接近,Pascal跟C語言比較接近,所以不少學校都是先教Pascal再教C語言


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

vBulletin Version 3.0.1
powered_by_vbulletin 2025。