Fw: [問題] 如何同一個程式在不同作業系統編譯執行

看板Programming作者 (喵食罐頭)時間13年前 (2012/09/25 11:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 C_and_CPP 看板 #1GNyRIFc ] 作者: kikiqqp (喵食罐頭) 看板: C_and_CPP 標題: [問題] 如何同一個程式在不同作業系統編譯執行 時間: Mon Sep 24 10:34:56 2012 標題有點竦動,但我想問的不太清楚要怎麼描述標題 所謂不同作業系統是指Windows 9x/DOS 以前Windows 3.x/9.x時代時有些執行檔在視窗下執行會出現視窗介面 在DOS下執行會有文字介面(或進入繪圖模式),功能相當。不會出現錯誤 很好奇的想請教要如何做到這點呢? 編寫兩個不同的程式碼是我可以理解的部分(這樣函式可以共用?) 但起動是怎麼做判斷,在main中判斷作業系統然後跳到該執行的部分嗎? 不過編譯器不是會因為程式碼內容編譯時就決定好所要聯結的作業系統資源? 問題有點天,不過一時想不懂,也不知道網路上有沒有相關例子和code可以參考 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.117.222

09/24 10:47, , 1F
PE結構要改
09/24 10:47, 1F

09/24 10:54, , 2F
似乎比較少談論到PE的部分,好像只有病毒插入比較有提及orz
09/24 10:54, 2F

09/24 11:00, , 3F
WIN32的PE中有一個DOS程式區塊,可以插入DOS程式碼
09/24 11:00, 3F

09/24 11:01, , 4F
要加大DOS區塊,或是另找空間,把程式碼用組語寫進去
09/24 11:01, 4F

09/24 11:02, , 5F
執行DOS時會進DOS程式碼,執行WIN時會進WIN程式碼
09/24 11:02, 5F

09/24 11:05, , 6F
我看到winnt.h有_IMAGE_DOS_HEADER的部分,看來我得先由
09/24 11:05, 6F

09/24 11:05, , 7F
這邊下手研究看看.....謝謝
09/24 11:05, 7F

09/24 11:13, , 8F
利用修改PE把 DOS程式+WIN程式合體 這部份我也研究很久
09/24 11:13, 8F

09/24 11:23, , 9F
PE 最前面一塊不就是印出一行訊息的 realmode DOS 程式嗎
09/24 11:23, 9F

09/25 11:15, , 10F
我在想是不是可以先編譯為組語然後插入在那個段落裡
09/25 11:15, 10F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: kikiqqp (122.116.117.222), 時間: 09/25/2012 11:15:59
文章代碼(AID): #1GOI7naP (Programming)
文章代碼(AID): #1GOI7naP (Programming)