Forum » Programiranje » Prehod iz 32 na 64b - pointer registri?
Prehod iz 32 na 64b - pointer registri?
AtaStrudl ::
Z!
naletel sem na en problemcek...
Za number crunching uporabljam SSE ukaze kot inline asembler.
Na 32 bit masinah sem delal takole:
is sem potem saral po arrayu s pomocjo tistega esi-ja (in drugih podobnih registrov).
Na vseh 32b masinah mi to spila OK, ko pa hocem prevest na enem Athlonu 64 X2, so pa problemi, kao invalid operands...
Sumim, da je to zato, ker so pointerji na 64b masini pac 64 bitni in ne grejo v 32bitni esi. Kak predlog, kako bi to resil? Ali na 64 bitnikih obstajajo kaksni ustrezni registri? Sekat na 32 najbrz ni prav dobra resitev, ceprav imam fizicno samo 1G spomina, ker stvar dela v virtualnem prostoru...
LP!
naletel sem na en problemcek...
Za number crunching uporabljam SSE ukaze kot inline asembler.
Na 32 bit masinah sem delal takole:
float c[1024] __attribute__((aligned(16))); __asm__ ( "movl %0, %%esi\n\t" "movaps 128(%%esi), %%xmm0\n\t" . . . ::"g" (c) :"memory","esi","xmm0" );
is sem potem saral po arrayu s pomocjo tistega esi-ja (in drugih podobnih registrov).
Na vseh 32b masinah mi to spila OK, ko pa hocem prevest na enem Athlonu 64 X2, so pa problemi, kao invalid operands...
Sumim, da je to zato, ker so pointerji na 64b masini pac 64 bitni in ne grejo v 32bitni esi. Kak predlog, kako bi to resil? Ali na 64 bitnikih obstajajo kaksni ustrezni registri? Sekat na 32 najbrz ni prav dobra resitev, ceprav imam fizicno samo 1G spomina, ker stvar dela v virtualnem prostoru...
LP!
smoke ::
Kateri compiler pa uporabljas ? VC++ na windowsih recimo vec ne podpira inline assemblyja (pojma niam zakaj, microsoft je pac butast brez razloga zgleda.) Kar se pa tice registrov v 64bit mode-u.. Vsi registri so povecani na 64bitov in imajo imena ki se zacnejo z "R" ( RAX, RCX, RBX, RSI .. itd). Ce mi razlozis kaj bi pa program naj naredil v bistvu, ti lahko pomagam napisat kodo :) (sori, neznam razbrat hehe, naceloma uporabljam Intelovo sintakso ko pisem v ASM, AT&T mi je malo tuja :))
AtaStrudl ::
Hvala, bom pogledal v tej smeri (ja, vem, sem malo len, namesto da bi zdownloadal procesor data pdfje sprasujem na slotechu...)
Sicer pa delam z GCC, pod linuxom, v glavnem zadeve s podrocja signal procesinga.
Vecino imam ze napisanega, in prav dela na 32b mlinckih, samo ko sem probal prevest na eni 64b masini, so me pozdravili errorji...
LP!
Sicer pa delam z GCC, pod linuxom, v glavnem zadeve s podrocja signal procesinga.
Vecino imam ze napisanega, in prav dela na 32b mlinckih, samo ko sem probal prevest na eni 64b masini, so me pozdravili errorji...
LP!
Brane2 ::
Če se motim, ti na 64-bitih dela samo CS, FG in GS.
CS je privzeto 0 in CPU upošteva samo interne privilegijske itd bite, pri FS in GS pa upošteva samo offset, brez ostalega crama.
Vsi ostali segment registri so "don't use" AFAIK...
CS je privzeto 0 in CPU upošteva samo interne privilegijske itd bite, pri FS in GS pa upošteva samo offset, brez ostalega crama.
Vsi ostali segment registri so "don't use" AFAIK...
On the journey of life, I chose the psycho path.
smoke ::
Kdo govori kaj o segment registrih? Clovek sprasuje ce so pointerji na 64bit 64bitni, odgovor je Da.
Brane2 ::
Res, prehitro sem "preletel" zadevo.
My bad.
My bad.
On the journey of life, I chose the psycho path.
Zgodovina sprememb…
- spremenil: Brane2 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Apple se poslavlja od 32 bitov (strani: 1 2 3 )Oddelek: Novice / Apple iPhone/iPad/iPod | 27430 (22414) | AndrejO |
» | Firefox vrača 64-bitno verzijo za WindowsOddelek: Novice / Brskalniki | 9042 (6969) | techfreak :) |
» | win x64 ali x86? (strani: 1 2 )Oddelek: Operacijski sistemi | 9531 (8160) | Razerzone |
» | [C++ & asm] najhitrejša inicializacija 2D matrikeOddelek: Programiranje | 1795 (1435) | Fury |
» | 64 bitni procesorjiOddelek: Kaj kupiti | 2658 (1861) | Blisk |