1 頁 (共 1 頁)

UNIX on MACBOOK PRO.....

發表於 : 05/08/2006 6:55 am
safinafan
不知道現在新的雙核心處理器,對於過去在power PC UNIX上,有沒有不適應的現象

小弟常用的就是fortran&C&C++&C#等等的編譯器

因為都是應用在氣象預報作業上,所以還在評估,不知道我需要的東西,是否在雙核心處理器上會不會有問題????

發表於 : 05/08/2006 9:08 am
ulysses
作業系統歸作業系統,硬體歸硬體,這是兩碼子事吧... :oops:
換了硬體,curl 的參數還是一樣都是那些... :oops:
像之前大家告訴你的一些 UNIX 操作,那都是通用的做法,不是在特定平台上的特例。

應用程式的部份,GNU 的程式重新編輯就可以了。
不過要是貴單位自行開發的程式,可能就... :roll:

不是說貴單位程式功力如何,而是這次的硬體變更會牽涉到 Endian 問題。
所謂 Endian,是指 CPU 內部解析資料的方式。
PowerPC 是 Big Endian 的機器,資料的排列是 MSB 優先,
而 Intel 則是 Little Endian,資料的排列是 LSB 優先。
舉個例子,0x01020304 這個 32 bits 的『數字』,
在 PowerPC 上的排列方式是 01,02,03,04,
在 Intel 上的排列方式則是 04,03,02,01。

這會造成什麼影響?主要是兩個:
1. 處理串流資料,例如 RS232、Socket 等資料的處理。
2. 自定資料格式的檔案。如果直接儲存 Binary 資料,在 PPC 上存的資料可能在 Intel 上讀出來都是反的。

另外,還有所謂 Structure Data Alignment 的問題。
也就是同一個 Structure 在不同的平台上內容排列方式與大小會不同。

所以在開發程式的時候,如果沒有考慮到以後 Porting 的問題,就會比較累。

發表於 : 05/08/2006 1:02 pm
safinafan
感謝Ulysses大哥的解說

這樣我就懂了....

發表於 : 05/08/2006 10:32 pm
cudown
太神奇了..............
完全看不懂

發表於 : 05/08/2006 10:42 pm
Genius Shen
簡單來解釋:
一萬二千三百四十五
PowerPC記憶體裡面是這樣排列: 12345
Intel CPU記憶體裡面是這樣排列: 54321

發表於 : 05/08/2006 11:21 pm
進藤光
還好吧... 魔戒大師講的只是最初淺的 Data Structure 而已.... 任何電子計算機本科系學生都應該要學的.... 至於【0x01020304】是使用 16 進制表示法...

但是聽說這年頭的學校已經沒人重視 Data Structure 課程,以致於一堆雜湊法、二元樹、佇列、遞迴... 沒幾個人懂.... :?

大多數的 AP 情況應該不會接觸到最底層的硬體,所以是 MSB 還是 LSB 差別應該不大,嗯~也就是沒差別...

嗯~Mac 上還有人玩 Assembly 嗎? :roll:

發表於 : 05/09/2006 8:42 am
ulysses
如果應用程式的輸入與輸出都是操作的人,那幾乎是不會碰到 endian 問題。以 ascii 資料為主的程式也不會碰到這種問題。但是如果要存取檔案那就會有問題了。除非你全用 human readable 格式存,然後再用 sscanf 自己解析,不然就是用 xml 來搞。

說起來也是有點悲哀。在下公司裡面的小朋友們(其實也不過差三四歲)跟他們講 Endian 還多少有聽過,可是講到 data alignment,structure data alignment,volatile 這些,全都霧颯颯。上次碰到 TI MSP430 這種 16 bits alignment 的 MCU,就被整得很慘。不曉得是哪個天兵發明說所有的欄位全部用 memcpy 來存取,在下幫忙除錯的時候看到,又好氣又好笑。把他們飆了一頓,乖乖的回去改成 data structure。

最近在下公司的行政處正在弄碩士級學程活動,列了一堆諸如『Java ME』『JSP』『TCP/IP 程式設計』之類的補習班課程。他們要在下提建議,在下就把他們列的課程通通劃掉,加上『高等計算機結構』、『資料結構與演算法』、『電腦網路與數位通訊原理』。不過他們大概也不會照辦...這些課恐怕老師都很難請。

發表於 : 05/09/2006 11:24 am
進藤光
啊?全部用 memcpy 來存取??該不會其他 mem**** 系列函式也通通拿來用吧? :badgrin:

我剛剛去翻了一下我手上的 Turbo C++ Bible(天啊,竟然超過 15 年了),即使是當年我在寫 AP 跟 Driver 的時候 (Voice/Fax Card 是由另一位同事負責),我也從來沒用過 mem 系列函式.... 這種直接操作底層記憶體的函式,使用不當搞不好會毀損OS,如果要拼速度?還不如直接用 Turbo Assembly 寫好,再從 C++ 呼叫...

我猜想這種小朋友該不會連 C++ 裡面的【class 跟成員函式】一個也沒用? :roll:

嘿嘿嘿... 大師要他們回頭去上這些基礎課程可能會要了他們的命,還不如去搞 Cisco 等認證課程... Title 好聽又好用... :badgrin:

發表於 : 05/09/2006 1:21 pm
ulysses
在下是弄 Embedded System 低~ :oops:
連 OS 都沒有,所以也不用擔心會損毀 OS 啦 :D
在 Embedded System 上用 C++...
除非是用 ARM7 啦...
目前正在哀求各大 Chip vender 弄個 ARM 版本的板子來給我們玩玩 ...
實在受夠了這些只有 64k code + 4k ram 的吉娃娃... :cry:

CISCO 認證?那是啥?可以吃嗎?
在下之前鬼迷心竅也去弄了張 CCNA,
卻還是搞不清楚他到底有啥作用... :oops:
還好只花了買參考書的錢,沒上當花大錢當凱子去上啥牢什子課。

發表於 : 05/18/2006 5:15 pm
老刀
我想樓主可能更關心現有 mactel 機種能否執行 x86 版本 FreeBSD 之類的 Unix 系統吧。不知透過 BootCamp 能否安裝 Unix/Linux?煩請有試過的朋友報告一下。