Něco z 64bitového soudku

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.


Nabízíme Delphi školení a konzultace na různá témata, primárně ve Vaší firmě.

Tagy:

Novinky v Delphi

Komentáře

2.11.2010 1:42:17 #

pingback

Pingback from topsy.com

Twitter Trackbacks for
        
        Delphi.cz | NÄ›co z 64bitovĂ©ho soudku
        [delphi.cz]
        on Topsy.com

topsy.com

2.11.2010 21:33:58 #

pepak

Oddělení Integeru a Pointeru (resp. vyčlenění NativeIntu z Integeru) považuji za hrubou chybu, vzhledem k tomu, jak často se používá integer(TObject) resp. TObject(Integer). IMHO to musí být přinejmenším volitelné - tak, jako byl v Delphi 2 zaveden přepínač, co vlastně má znamenat "string".

Připadá mi zvláštní, že se přestane používat matematický koprocesor, ale snad v Embarcaderu vědí, co dělají.

Úplně jsem nepochopil, co znamená to "Volací konvence ... nemají význam". To se asi myslí v šedesátičtyřbitovém kódu (protože tam, presumably, je _zatím_ používaná jediná volací konvence)? Protože v 32bitovém kódu bych řekl, že na volací konvenci záleží docela dost.

Omezení velikosti PE na 4 GB - no prosím, a já si tu dělám starosti, že už mi instalační archív programu zase přelezl přes 560 KB...

pepak

2.11.2010 22:50:01 #

radekc

>integer(TObject) resp. TObject(Integer)
předpokládám, že to bude asi Warning. Zas mi to nepřijde až jako takový problém.

>přinejmenším volitelné
to asi ne, to by bylo peklo pro autory komponent a zmatek

>matematický koprocesor
MS strongly discourages the use of the FP coproc on 64 bit Windows.
místo toho: SSE instrukce a xmm0:xmm15 registry

>Volací konvence
jo, celé je to o 64bit verzi. Asi jsem to málo zdůraznil. V tomto módu kompilátor bude prostě volací konvence ignorovat, ale pro 32bit jsou platné a důležité.

radekc

2.11.2010 22:51:31 #

radekc

ad koprocesor:
http://twitter.com/kylix_rd/status/28919892545

radekc

10.11.2010 16:30:02 #

Anonym

Dnešní RTL VC je napsaná bez Extended a spíš se mi zdá, že se to Microsoftu prostě jenom nechce přepisovat a případně hledat nové chyby z toho vzniklé. Extended lze v 64bit Windows používat bez problémů - např. MingW a ICC. V nejlepším případě budou za rozhodnutím Embarcadera nějaké úvahy o SSE.

Anonym

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS