Re: [問題] 程式執行

看板Linux作者 (上大學好忙喔)時間16年前 (2009/11/04 15:04), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《littleboypis (littleboypis)》之銘言: : ※ [本文轉錄自 LinuxDev 看板] : 作者: littleboypis (littleboypis) 站內: LinuxDev : 標題: [問題] 程式執行 : 時間: Wed Nov 4 13:35:05 2009 : 想請教一下 一隻程式是怎麼在OS(Linux/Windows)執行的? : 為何gcc hello.c後 就可以下 : ./a.out : 在OS上執行 : 如果在沒有OS上的 又是怎麼一個情況? : 謝謝 以下是綜合我知道的一些小東西 有錯誤的話還請其他前輩指教<(_ _)> binary的可執行檔會有他自己的格式 例如在Linux上稱為ELF executable 在windows上我不敢確定 我都叫他Win32 executable @@" 可以用$ file filename 來取得檔案的相關資訊 而作業系統會有loader 負責讀取可執行檔的內容 並載入指令(instructions) 到記憶體中 接著才會去執行他(細節我也實在不清楚orz 我認為不只是把Program Counter指過去這麼簡單) 但是在load之前 當然需要shell的幫忙 不然OS怎麼知道你要執行哪個程式? 所以簡單流程就是:user下指令 -> shell解讀指令 -> system call -> OS load->exec 如果沒有OS的 那就是這個程式本身就要可以執行 細節我也不清楚XDDD 不過硬體都會設計剛啟動的時候 會從ROM的哪個地方開始執行 而你就必須以那個地方當作開頭來寫入你的程式(的那些指令) 最少最少也需要一個jump 讓PC可以跳指到你的程式的主區段 -- 以上是綜合一些以前學過或了解的東西 有錯誤的話希望各位前輩可以指正 謝謝<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.245.15

11/04 15:29, , 1F
簡單來講沒錯 但細節忽略太多 Win32常用的是 PE
11/04 15:29, 1F
文章代碼(AID): #1AyIU5nY (Linux)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 4 篇):
文章代碼(AID): #1AyIU5nY (Linux)