vložil Radek Červinka
2. listopadu 2010 00:49
Allen Bauer na svém twitter.com/kylix_rd utrousil pár poznámek o 64bit Delphi. Něco jsem retweetnul na twitter.com/delphicz (lze sledovat jednoduše vpravo), ale pro historii malé shrnutí toho, co mi připadá důležité.
Základní pravidla:
- Velikosti typů pro 64: SizeOf(Integer)=4, SizeOf(NativeInt)=SizeOf(Pointer)=8 (to jsem už předtím psal)
- Tag property bude NativeInt (hodně lidí používá Tag pro uložení pointeru, resp. objektu - takže logické)
- SizeOf(THandle/HWND/HMODULE/Hxxxx) = SizeOf(Pointer) = 8. Toto není korektní: Value := Integer(Handle).
Value := Integer(TList[x]) -> Value := NativeInt(TList[x]). Nebo lépe TList<Integer>.
Další info:
- Max velikost 64bit PE je 4GB (no to je prima - jen doufám, že někteří programátoři nebudou používat jako resource DVD video)
- Extended = Double (největší překvapení, ale jelikož i MS má problémy s Extended a nedoporučuje používat FP koprocesor v 64bit a spolu prý s problémy se zarovnáním a dalšími - výsledek uveden)
- místo FP koprocesoru prý budou použity SSE instrukce a xmm0:xmm15 registry
- volací konvence pascal, register, cdecl, stdcall nemají význam (asi máme hodně registrů)
Jinak ohledně velikostí typů a zkratek LLP64, LP64. Delphi64 (na Windows) je LLP64.