史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   幾個程式的疑問 (http://forum.slime.com.tw/thread158694.html)

HERO 2005-10-13 05:48 PM

幾個程式的疑問
 
函數的「定義」和「宣告」有何不同
32位元處理器?什麼是64位元處理器?對程式設計有何影響
什麼是指令集,對程式設計有何影響

剛剛被考倒了~有大大可以解釋給我聽嗎?感激不盡!

mini 2005-10-13 08:02 PM

函數的宣告
是一種公告
告訴 xx 有這麼一個功能
(及 如何溝通)

函數的定義
即 函數的成型
把函數內部的運作方式 編寫出來

函數 可以沒有 (顯著的)宣告,但一定要有 函數的定義

不過 上面這句話 不適用現代的C++


什麼是64位元處理器?
可以用高速公路來比喻 :
單位時間前提下 8線道比4線道 之道路 可以處理更多車流量
64位元 代表的意義就在於 資料處理量是 32位元 的兩倍 (實際不能這麼肯定,因為還與程式設計有很大關係)
(各)匯流排寬度提高
連帶著
暫存器、(各)處理單元、記憶體定址能力
都要一起調整(提高)
這才能叫真正的 xx位元處理器

對程式設計有何影響
基本來說 除非是用 低階語言
否則 可說沒有影響 (因為新的CPU之使用是編譯器的事)
頂多需注意的是
低階控制 與 程式編譯器版本 等問題

什麼是(CPU)指令集
你給CPU什麼電子訊號
就是會根據電路設計
跑出什麼訊號給你
拿之前的函數來講的話就是 :
使用者知道的是 "宣告"
而內部的電路設計就是 "定義",程式設計者絕大部分是不需研究 '它' 的
利用
所知到的 函數 來組合出 功能
當然一般的 高階程式設計使用者 也根本不用知道 CPU提供什麼指令集

對程式設計有何影響
新的指令集 有著 "簡化(簡化觀點、簡化調度)" 或 "替代一連串的舊指令集(時而它就是特別為某某功能而設計的)" 或 "提供新的可使用資源"
就能達到所要的功能
所以 程式設計 上 使用 新的指令集
就能達到
縮短單位時間內 功能之達成
(運算)處理速度當然就快多了

snoopy 2005-10-13 09:19 PM

引用:

作者: HERO
函數的「定義」和「宣告」有何不同
32位元處理器?什麼是64位元處理器?對程式設計有何影響
什麼是指令集,對程式設計有何影響

剛剛被考倒了~有大大可以解釋給我聽嗎?感激不盡!

函數宣告 宣告函數名稱 引數 回傳值
函數定義 定義函數要做什麼事情 也就是填滿函數左大括號至右大括號的部分

32位元是指CPU暫存器長度為32位元
不論32或64位元
使用者只能存取16位元

指令集就是CPU本身的指令
對於高階語言設計者來說
並沒有什麼影響
對於組合語言來說
必須要寫CPU看的懂的指令才行

mini 2005-10-13 11:04 PM

一個暫存器被分成 幾個部分
高、低、延伸、??
所以 使用者 不是只能存取16位元 才對 !~

snoopy 2005-10-13 11:10 PM

引用:

作者: mini
一個暫存器被分成 幾個部分
高、低、延伸、??
所以 使用者 不是只能存取16位元 才對 !~

應該是高八位元 低八位元
延伸部分應該使用者不能存取吧
應該是這樣吧

mini 2005-10-14 09:53 AM

當初學組合語言
因為只學基本 所以沒有用過 延伸部分
但並不表示 使用者不能存取
比如 80386 的 EAX 暫存器結構是
31~16 15~8 7~0
[沒名字] [AH] [AL]
雖然 延伸部分 沒名字所以不能單獨使用
但不表示不能用整個 EAX
比如
mov eax, dword ptr [edx]

至於
x86-64 的暫存器設計如何可見
http://publish.it168.com/2003/0521/images/25685.gif
AX -> EAX -> RAX
EAX 之使用
可以先用邏輯運算方式遮蔽 AX 如此就可達到分割使用 16bit以上與以下之內容
當然也可 一次使用

http://it.hnblue.cn/html/2003-9-9/200399103254.htm

snoopy 2005-10-14 10:17 AM

喔喔 是這樣啊
因為施威銘的組合語言是寫說
我們只能存取0至15bit
不能使用16-31bit的部分

mini 2005-10-14 11:02 AM

引用:

作者: snoopy
喔喔 是這樣啊
因為施威銘的組合語言是寫說
我們只能存取0至15bit
不能使用16-31bit的部分

其實這麼說也不能說不對
可以改正為
不能單獨一指(令)運算 16-31bit的部分

如要把
EAX 用來記載 兩個 16bit 資料
可以用邏輯運算的方式
要把 E5 與 FE 放在 EAX裡
可以先把 E500 + EF 再 mov 到 EAX
要提出16-31bit來 就直接
做 EAX and FF00 並右位移FF

此情形發生於 暫存器吃緊

Eric Chen 2005-10-19 02:06 PM

兩位的文章收下.

ps. mini 兄,早前求教的問題已測試成功,謝謝.
:ddrf567h: :ddrf567h:


所有時間均為台北時間。現在的時間是 08:14 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1