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)

shad 2005-11-30 03:03 AM

我也來說一下個人拙見

1.
C跟PHP、Perl、VB等語言比起來是低階了點,
但是也不能算在低階,我偏好說他是中階,
因為若他是高階,那我認為大部分高階語言就要改叫高高階了。

2.
很多人還在用ASM開發小軟體(實際上其工程也不小),以特殊團體(C...er)為多。

3.
個人討厭MFC,還是API多用用或者自己寫函式實在點,
不過很多軟體都用MFC啦,程式是用來使工作輕鬆的,故節省時間亦無不可。

4.
一般來說,我們都說Linux由C寫成,沒看過有*.cpp(這裡單指我沒看過),或許會包含asm吧,
而依我的想法,我認為不一定要用C,
或許就像執行檔的link那樣,編譯出來的二進制檔案還是可以結合在一起使用,
但這通常難以稱作標準Linux (結論:以C寫成是「普遍說法」)

5.
MicroKernel 跟有沒有用C++我感覺不到有任何關聯,可否詳加說明?

6.
我知道「Linux整個系統」之中有用C++寫的部分
﹝看你怎麼定義「整個」,我也可以補一個Perl的程式上去,但它不是核心﹞

7.
中文化通常改的是Resource;
CXAT只屬於簡單的中文化工具﹝無可否認,它很好用﹞;
沒看過有人常用ollydbg中文化,它比較屬於debugger。
ollydbg我想很難再出新版本了,停滯了許久。

8.
用C寫GUI程式比ASM簡單許多(Win32)﹝至少不是差不多﹞

9.
以上,因今天﹝現在快天亮了﹞有重要的事,
沒仔細看討論,只對幾個地方提出意見,人非聖賢,若有謬誤懇請指正,
小弟有十足的學習心,縱然天資不佳,但是仍然希望多與眾先進請益,感謝。

引用:
作者capitalm
有沒有用 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

這篇十分中肯,我喜歡!

引用:
作者hodala
約在1970年,Bell Lab的Ken Thompson用asm寫了一個unics,之後Dennis Ritchie把unics用C重寫,後來並以Dennis所寫的為基礎來發成正式版本,並稱為Unix.........

因為Dennis用C寫,所以導致Unix具有強大的portability.
注意一下,這邊所指的portability,是以asm跟C的觀點來看的,講白話一點,用asm的話幾乎要全改,用C的話只要改底層的部份,像是在最底層的kernel,compiler方面,還是要做出適合自己機器的修改.
像是Berkeley的Bill Joy把Unix拿來改成符合自己機器的版本,此版本即是頂頂有名的BSD.

我已經點出你的解答了,就是任何OS都算是machine dependent,像是linux,他有x86版本有PPC版本,有Alpha版本,有SPARC版本......有任何的embedded system版本

1987年Richard Stallman完成了GCC,以及其他重大工具,如bash,emacs,gnuclib.......
不講古了

這篇也講得很實在,認同...
但BSD與UNIX的故事不只就這麼簡單,
這又要說到AT&T、一些大學、BSD、FreeBSD、Linux之間錯綜複雜故事了。

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

有道理。

That's ALL !

aq0127 2005-11-30 03:55 AM

引用:
作者shad
我也來說一下個人拙見
------43--------
7.
中文化通常改的是Resource;
CXAT只屬於簡單的中文化工具﹝無可否認,它很好用﹞;
沒看過有人常用ollydbg中文化,它比較屬於debugger。
ollydbg我想很難再出新版本了,停滯了許久。

-------43-----------


不好意思 :ase , 之前在做一些簡易的中文化時, 習慣性的把所有的工具都泛指為
中文化工具了 :ase (全部丟在一個文件夾, 然後文件夾名字就叫做中文化工具 :p )
因為中文化一定需要用到脫殼工具, 而 ollydbg 又常被用來手工脫殼, 所以我就把
cxat, exeScope, VC++ 6.0, PEID, FI, ASpack/UPX 都簡單稱之為中文化
工具了 :ase

像是在做整合 XP 時需要的工具也一堆, 軟體自動安裝或者raid/scsi/sata 驅動安裝
或 Diskemu , Compression Bin, inno setup 我也是通通把它們丟在一個 『XXXXX
XP相關資料』的文件夾裡 :stupefy: 其實我知道功能是不一樣的啦, 不過就是懶了一點, 我想
應該很多人都跟我有相同的習慣吧 :)



關於shad兄其它的部份我覺得寫得很清楚, 讓小弟受益良多, 感激感激 :)

shad 2005-11-30 04:35 AM

引用:
作者aq0127
(以上恕刪)

關於shad兄其它的部份我覺得寫得很清楚, 讓小弟受益良多, 感激感激 :)

不敢不敢,誠如我所引的引言,
我說的在之前就有先進先行說出了(而我打完了才發現),豈敢居功。 :shy:

冰人 2005-11-30 07:06 PM

引用:
作者ABBACHEN
LIKE UNIX SYSTEM <--我打錯 應該是 Unix Like System
還是錯
UNIX like operating system 是 UNIX 喜歡作業系統
UNIX-like operating system 是像 UNIX 的作業系統

kukulcan 2005-11-30 07:52 PM

唉唉唉唉,果真是吵不完...

我承認我之前扯上 MicroKernel 與 C++ 的關聯純然是來亂的。我的立意是與其要把Kernel 改用 C++ 寫不如 先改成 MicroKernel。Kernel Develope group 連 MicroKernel 都弄不到了,還有可能用c++改寫嗎?

另外 Linux Kernel 是 FSF管轄 的軟體,Linux Kernel 一定是 FreeSoftware。如果你要惡搞用VB全面改寫,Fine,但是你就不能夠稱之為 Linux Kernel。

另外我很好奇,網路上能夠找到用C++寫的Linux Kernel嗎?

另外,我跟ABBACHEN的衝突源自於對於 "Linux"這個名詞的定義。我想ABBACHEN認為Linux是一套作業系統。這是錯的,Linux = Linus' minix kernel。故 Linux 只是一個 Kernel,所以用 Linux Kernel 來取代 Linux 是比較能夠避免爭議的作法。

那....那個 作業系統應該是?
應該稱之為 GNU/Linux。你給的連結首頁寫的是 "The GNU Operating System", GNU 計畫遠比 Linux Kernel 大的多。是誰寫了 top這程式?誰寫了 ls ?誰寫了 gcc,誰寫了 glibc ?

用一個狹隘的"Linux"來稱呼整個計畫是不適切的作法。

我想你也知道,GNU Project真正的Kernel 不是 Linus 創造的....

nagual 2005-11-30 09:13 PM

引用:
作者玉面飛龍至尊寶
他居然還說 je 這種跳轉指令是判斷指令 ....
我不會寫程式 但是我學習ASM的小木偶的網頁 也不是這樣說的


je 是 jump equal 嗎 ?有的指令是先判斷再跳的, 不知這個是不是

nagual 2005-11-30 09:32 PM

引用:
作者Salous
因為Linux是以C寫成的,所以說,只要該機器平台有C的編譯器,應該都可以讓Linux在該平台上運行,希望沒說錯:)


不一定如此.
編譯器只要輸入, 也就是原始碼餵給編譯器, 然後編譯 輸出目的檔就可以了,
這個編譯器所產生的目的檔可以是for其它平台, 不需跟編譯器所在的平台一樣.
編譯器只需要其它平台相關的opcode和registers等知識即可.

這種編譯器就是cross-platform compiler.

capitalm 2005-11-30 09:46 PM

引用:
作者kukulcan
唉唉唉唉,果真是吵不完...
我承認我之前扯上 MicroKernel 與 C++ 的關聯純然是來亂的。我的立意是與其要把Kernel 改用 C++ 寫不如 先改成 MicroKernel。Kernel Develope group 連 MicroKernel 都弄不到了,還有可能用c++改寫嗎?

why not?
另外什麼叫做 MicroKernel 弄不到?
Mach microkernel 一堆 OS 都在用
引用:
作者kukulcan
另外 Linux Kernel 是 FSF管轄 的軟體,Linux Kernel 一定是 FreeSoftware。如果你要惡搞用VB全面改寫,Fine,但是你就不能夠稱之為 Linux Kernel。
另外我很好奇,網路上能夠找到用C++寫的Linux Kernel嗎?

linux kernel 並不是 FSF 管轄的,它只是使用 GPL 發佈而已
網路上並沒有用 C++ 寫的 linux kernel,但是這不代表作不到

xiemark 2005-11-30 10:01 PM

eCos是用C++寫的。

Salous 2005-11-30 10:12 PM

引用:
作者nagual
不一定如此.
編譯器只要輸入, 也就是原始碼餵給編譯器, 然後編譯 輸出目的檔就可以了,
這個編譯器所產生的目的檔可以是for其它平台, 不需跟編譯器所在的平台一樣.
編譯器只需要其它平台相關的opcode和registers等知識即可.

這種編譯器就是cross-platform compiler.


原來如此,也就是說只要編譯器有某平台的opcode級registers等資訊即可在任何平台上編譯?


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

vBulletin Version 3.0.1
powered_by_vbulletin 2025。