我在問這個問題,以澄清我理解編譯正確與否的某些事情。我將描述一個我持有的情況和假設。請告訴我這些假設是否屬實,如果不是,爲什麼。更好地理解編譯
假設我有一個C程序可以在一個處理器體系結構上編譯,但可以編譯兩個不同的操作系統,而不需要對代碼進行任何更改。這個程序有一些抽象邏輯的部分,只是計算東西和改變內存,然後是一些與操作系統交互的部分。
我想,這意味着這兩個二進制文件在抽象的邏輯發生的地方完全一致的,因爲它只是在同一臺機器的指令,只有地方的程序與操作系統進行交互,比如所有IO類型和分配內存不同。
我也明白這些差異只是因爲這些操作系統的實現例如
<stdio.h>
不同。而且它不同,因爲這些操作系統對於設置信號有不同的標準:在每個寄存器中留下什麼信息,哪些信號代碼意味着什麼,等等,並且這些庫需要被校正以與這種格式兼容在每個OS上。
我可以用不同的形式寫出這個問題,例如,「程序只是在IO部件中以不同的方式編譯?」,但我只是希望我的問題的上下文和意圖清楚。 –
如果你想讓你的問題清楚,你可能需要考慮重寫你的標題。目前標題非常廣泛(不是說你的問題是)。 – ace
這與編譯有關嗎?實際上翻譯同樣如此。對於一個操作系統,甚至是簡單的驅動程序,整體也是如此:它們爲底層硬件提供抽象。您在軟件中到處都有橫向分層。 – Olaf