做32位 64位跨版本程式設計,有什麼需要注意的麼?

時間 2021-05-11 16:18:40

1樓:朱涵俊

引數傳遞區別很大,32是用棧,64是先用暫存器。雖然這是彙編的內容,但c總免不了要跟彙編接觸。還有浮點,32位是float計算快,64位應該用double。

float會轉換成double,計算完成再轉回float,反而慢。

2樓:陳碩

呼叫 C 語言的 variadic function,傳 NULL 引數要特別小心。因為 0 只會 promote 到 int,不會 promote 到 long,因此需要 cast。

例如 execl("/bin/ls", "ls", "-l", NULL); 在 32-bit 下是正確的,但是在 64-bit 下可能是錯的。

最好寫成 execl("/bin/ls", "ls", "-l", (char*)NULL);

3樓:向晨

說乙個冷一點的。

有些函式以及浮點運算,要求有align 方式,典型RISC cpu的系統,對align要求比較嚴格。

align按照32位位址對齊或者按照64位位址對齊,如果沒有對齊,處理器可能陷入某種exception,從而影響處理效率。。

64位作業系統跟32位比有什麼區別?

普通IT技術人員 說作業系統32 64位的區別,就不得不說,cpu硬體的位數區別,主要是硬體工藝的問題。32位CPU指的是該CPU在單位時間內能一次處理的二進位制數的位數為32位 64位CPU指的是該CPU在單位時間內能一次處理的二進位制數的位數為64位 而作業系統位數是針對cpu的位數而開發出來的...

64位CPU與32位CPU效能有什麼差距?

freeman 64位系統,主要優勢是 1 採用64位定址方式,支援更大的定址空間。2 處理64位整數更快。3 有更多的通用暫存器,和增強指令集可用。但其實也造成了不少浪費 1 多數應用32位整數足夠用了。其實只需要增加一點64位運算支援就行了,不必要全部暫存器都公升到64位。2 指標占用 記憶體對...

C 如何跨平台判斷作業系統是32位還是64位?

WhatIsSpin 題主你這問題,成心折騰程式設計師。首先得說明一下,不呼叫系統API,又想知道與系統相關的東西,這就像你讓我進門拿東西,又把門鎖上不給我鑰匙一樣,正統方法是根本不可能做到的 且不深究這麼做有什麼意義,本來乙個很簡單的函式就能解決的問題繞個圈 那就得走曲道破窗而入。其次是跨平台不是...