精華區beta Programming 關於我們 聯絡資訊
※ 引述《meltice.bbs@bbs.cs.nccu.edu.tw (三億兩千萬大散戶)》之銘言: > 先不要講不同作業系統的不同API > 也不要比較不同作業系統的執行檔格式不同 > cout << "Hello, world!" << endl; > 這段程式應該只用到C++的library吧 > 那這段程式的object code可以跨平台嗎? > WinXP跟linux的cout的底層實做會一樣嗎? > 我猜應該不會一樣吧 這會用到 kernel API,也就是 system call。 根據 OS 教科書以及幾乎所有 dual-mode 的 OS 實作, 與 I/O 相關的 hardware instructions 大都被設定為特權指令, 所以 C++ library 本身對 cin/cout 的實作還是會去呼叫到 system call, 跟 OS 要求 I/O 服務, 通常是把一些值放進特定的 registers 然後呼叫某個編號的軟體中斷, 每個 OS 有自己的中斷向量表,有自己的中斷服務常式, 還有自己的參數傳遞規則(也算是 ABI 的一部份)。 所以換 OS 可能這些 binary code 就不能動了, 除非 ABI 一樣或是有 emulator。 Anyway, cin/cout 是 C++ 中極少數的 machine-dependent 實作, 某些 Embedded System 不見得會有辦法用。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Chung Cheng University Department: Computer Science and Information Engineering Researching: GNU Toolchain Porting for Unified RISC/DSP Processor with VLIW Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.16 > ╰─╮ ╚╦═╦╝ From:218-171-137-95.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩