Autor Téma: XE2 a signalizace, že je třída připravena na 64 bitů  (Přečteno 2857 krát)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Byl jsem včera na Snídaní s Embarcaderem o migraci na XE2. Moc se k tomu radši vyjadřovat nebudu, co taky chtít zadarmo, ale zarazila mě tam jedna potenciálně užitečná informace: že je prý třeba ke třídám přidat atribut, který řekne, že je třída kompatibilní s x86 resp. x64 (resp. s oběma). Speciálně jsem se na to ptal a dozvěděl se, že to je třeba udělat u úplně všech tříd. To se mi zdálo divné, tak jsem si to dneska vyzkoušel a řekl bych, že 1) to u mých vlastních tříd odvozených od TObject není třeba dělat (kompilátor aplikaci klidně zkompiluje a tuto aplikaci jde i spustit), a 2) Embarcadero samo to zjevně nedělá, soudě podle toho, že nikde ve zdrojáku VCL ta konstrukce pro deklaraci bitovosti použita není. Takže se chci zeptat - dozvěděl jsem se úplnou blbost (bitovost není třeba signalizovat vůbec) nebo částečnou blbost (signalizace potřeba je, ale jen v některých situacích), nebo jsem nesprávně vyhodnotil to, co vidím ve zdrojácích a co jsem si zkoušel?

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1127
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #1 kdy: 13-06-2012, 17:52:44 »
predpokladam, ze pokud nic signalizovane neni, tak to jde spustit u obou,
specifikovat to je potreba u kodu, ktery opravdu jsou kompatibilni s jednim

me to nic nerika (mozna budu mlet blbosti), ale nejaky ty instrukce SSE4 jsou jen pro x64 a tak by to u nejakych takovych funkci melo byt znaceno

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #2 kdy: 13-06-2012, 17:56:56 »
No, ta informace totiž byla opačná - pokud chci něco jiného než x86, musím to explicitně uvést, zatímco praktický test a ostatně i logika věci mluví spíš o opak (pokud neuvedu něco jiného, znamená to podporu všeho).

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #3 kdy: 13-06-2012, 17:57:32 »
Zítra když tak kouknu do materiálů, které jsem si pochopitelně nechal v práci, jak přesně ta signalizace vypadala.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2349
  • Karma: 102
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #4 kdy: 13-06-2012, 20:17:12 »
To je blbost. Jediné co je nutné, je v případě, že tvoje komponenta je jen pro jednu platformu toto specifikovat, aby designer (nebo IDE) ji nenabízelo. Aspon co vím. Jinak se předpokládají všechny platformy.

Kód: Delphi [Vybrat]
  1.   [ComponentPlatformsAttribute(pidWin32 or pidWin64)] // not supported on OSX
  2.   TMyComponent = class(TComponent)
  3.   private
  4.     ...
  5.   end;
  6.  
« Poslední změna: 13-06-2012, 20:20:53 od Radek Červinka »
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2349
  • Karma: 102
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #5 kdy: 13-06-2012, 20:20:07 »
... nejaky ty instrukce SSE4 jsou jen pro x64 a tak by to u nejakych takovych funkci melo byt znaceno

SSE4 muzes klidne pouzivat i v Win32, ale nemusí to procesor podporovat (tj. musis si to otestovat). Ale kdyz je to spusteno na 64bit tak je to zaruceno, jelikoz vsechny 64bit procesory umožňují SSE (nevím sice jestli 4, ale tady jde o princip). Proto taky 64bit kompilátor používa SSE instrukce.
Embarcadero MVP - Czech republic

Offline zdenek

  • Plnoletý
  • ***
  • Příspěvků: 134
  • Karma: 8
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #6 kdy: 16-06-2012, 21:48:08 »
Možná to stím souvisí. Teď jsem převáděl komponenty do XE2. Nemám je nijak označené a pokud mám nastaveno Platform 64bit, tak jsou v toolpaletě šedivé a nejdou dát na form.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2349
  • Karma: 102
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #7 kdy: 17-06-2012, 22:26:05 »
A když tu komponentu označíš přes ComponentPlatformsAttribute ? Myslel jsem si že std. jsou všechny platformy (asi se to v průběhu vývoje změnilo). Ale možná je výchozí Win32. Každopádně to platí je pro komponenty na paletě.
Embarcadero MVP - Czech republic

Offline zdenek

  • Plnoletý
  • ***
  • Příspěvků: 134
  • Karma: 8
Re:XE2 a signalizace, že je třída připravena na 64 bitů
« Odpověď #8 kdy: 18-06-2012, 13:52:28 »
Tak jsem zkusil jednu komponentu označit a už je aktivní i u 64bit a v hintu u komponenty se zobrazuje  Supported platforms 32bit a 64bit.

EDIT: Ale asi závisí na výchozím nastavení celého package. Ještě budu bádat.

Vypadá to že automaticky jsou komponenty povolené jen pro Win32, dokud se neoznačí
« Poslední změna: 18-06-2012, 13:58:21 od zdenek »