# AMD64 ja 32-bittinen järjestelmä

## techa

Heips, olen asentamassa gentoota ekaa kertaa ja mietin, miten tulisi toimia kun haluan natiivin 32-bittisen ympäristön ja käytössäni on amd64. Toki pitää ainakin valita x86-stage, mutta voinko esimerkiksi asettaa -march-arvoksi 'k8' vai pitääkö march-arvoksi asettaa esim. 'athlon-xp' ja voiko use-arvoihin laittaa 'amd64'. Kernelistä kai pitää joka tapauksessa valita prosessori oikein, jotta järjestelmä toimii.

Kiittäen etukäteen,

Matti

----------

## Peculier

Jos haluaa asentaa 32-bittisen systeemin pitää järjestelmää kohdella kuin se olisi athlon-xp.

Siis kaikessa.

Kernelikin pitää kääntää 32-bittiseksi.

AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa.

Näin siis olen käsittänyt. Ja luulen(toivon) että olen käsittänyt oikein  :Wink: 

P

----------

## mrl586

 *Peculier wrote:*   

> AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa.

 Totta, mutta vain tiettyyn rajaan asti.

----------

## Peculier

 *mrl586 wrote:*   

>  *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti.

 

Hmm, mitäköhän mahdat tarkoittaa?

Tässä hieman selvennysta:

http://en.wikipedia.org/wiki/AMD64

 *Quote:*   

> The AMD64 or x86-64 or x64 is a 64-bit processor architecture invented by AMD. It is a superset of the x86 architecture, which it natively supports.

 

----------

## sanyacid

Minä käytän 32-bittistä Gentoo AMD64 koneella. Minulla on aina ollut -march=i686, pitäiskö minun vaihtaa sen athlon-xp:ksi?

Olen ennen käyttänyt x86_64, mutta sen kanssa tuntui olevaan vähän enemmän ongelmia, joten päätin vaihtaa takaisin 32-bittiseen, toistaiseks.

Mutta se olikin jo yli puoli vuotta sitten, että luultavasti asiat ovat muuttuneet parempaan suuntaan.

----------

## Nimble

Itse painin saman ongelman kanssa aiemmin. Apu löytyi täältä https://forums.gentoo.org/viewtopic-t-177670-highlight-amd64+cflags.html.

----------

## mrl586

 *Peculier wrote:*   

>  *mrl586 wrote:*    *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti. 
> 
> Hmm, mitäköhän mahdat tarkoittaa?
> 
> Tässä hieman selvennysta:
> ...

 

Tuo on yhteensopiva x86-prossujen kanssa, mutta ei vanhempien suorittimien kanssa.

----------

## oggialli

 *mrl586 wrote:*   

>  *Peculier wrote:*    *mrl586 wrote:*    *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti. 
> 
> Hmm, mitäköhän mahdat tarkoittaa?
> 
> Tässä hieman selvennysta:
> ...

 

Öh, minkäs kanssa se sitten olisi yhteensopiva ? Ymmärrätkö mitä sanot? Ei se voi ollakaan yhtään x86:ta vanhempien prossujen kanssa yhteensopiva. Mikään muukaan x86-prossu ei ole.

Ensimmäinen x86-prossu oli siis jo yli 25 vuotta sitten julkaistu Intel 8086.

Ja suosittelen GCC 3.4:n ja march=athlon64:n käyttöä, sen pitäisi toimia 32-bittisenäkin ihan hyvin. Athlon XP:ssä ei ole SSE2:ta, joten käyttämällä march=athlon-xp:tä missaa hyödyn A64:n SSE2-tuesta.

----------

## Syzar

 *oggialli wrote:*   

>  *mrl586 wrote:*    *Peculier wrote:*    *mrl586 wrote:*    *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti. 
> 
> Hmm, mitäköhän mahdat tarkoittaa?
> 
> Tässä hieman selvennysta:
> ...

 

Jos olen oikein ymmärtynyt muualta niin tuo march=athlon64 kääntää jotain 64-bittisen ominaisuuksia päälle joten se ei ole suositeltavaa.

Omasta mielestä paras on juuri tuo march=athlon-xp ja lisäksi sse2 erikseen -msse2 switchillä päälle käännettynä.

----------

## mrl586

 *oggialli wrote:*   

>  *mrl586 wrote:*    *Peculier wrote:*    *mrl586 wrote:*    *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti. 
> 
> Hmm, mitäköhän mahdat tarkoittaa?
> 
> Tässä hieman selvennysta:
> ...

 

Tarkoitan noilla x86-prossuja vanhemmilla prossuilla ennen Intel 8086:sta valmistettuja suorittimia.

----------

## oggialli

 *Syzar wrote:*   

>  *oggialli wrote:*    *mrl586 wrote:*    *Peculier wrote:*    *mrl586 wrote:*    *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti. 
> 
> Hmm, mitäköhän mahdat tarkoittaa?
> 
> Tässä hieman selvennysta:
> ...

 

Ei käännä yhtään mitään päälle, tuottaa vain hieman paremmin A64:lle sopivaa assyä. Tosin erot eivät ole suuria.

Ja "ennen 8086:ta valmistettuja prossuja" ei ole PC:issä koskaan ollut, joten "backwards compability" näiden kanssa on irrelevanttia. 8086:han ei siis ole ollut mikään päivitys mistään kuten x86->IA32->x86_64 vaan ensimmäinen lajinsa suoritin.

----------

## mrl586

 *mrl586 wrote:*   

>  *oggialli wrote:*    *mrl586 wrote:*    *Peculier wrote:*    *mrl586 wrote:*    *Peculier wrote:*   AMD64 on alaspäin yhteensopiva prosessori käskyjen kanssa. Totta, mutta vain tiettyyn rajaan asti. 
> 
> Hmm, mitäköhän mahdat tarkoittaa?
> 
> Tässä hieman selvennysta:
> ...

 

Pocket PC -koneet eivät taida ymmärtää x86-käskyjä.

----------

## oggialli

Ei niin, niiden prosessoriarkkitehtuuri taitaa olla yleensä ARM. Mutta mihin ihmeeseen tämä liittyy ? Pocket "PC" -koneet eivät liity mitenkään PC:ihin eivätkä 8086:ta vanhempiin suorittimiin, ARM on huomattavasti x86:ta uudempi prosessoriarkkitehtuuri.

----------

## mighty96

Lueskelin näitä ja englannin kielistä keskustelua asiasta, ja avoimeksi jäi ainakin se, että stage1 ehdotettiin, mutta miksi? Ja kannattaako käytää seuraavassa ehdotettua, ja miten sitten stage1, jos siitä mitään hyötyä on.

 *Quote:*   

> Anyway, if I put this in /etc/make.conf
> 
> Koodi:
> 
> ACCEPT_KEYWORDS="x86"
> ...

 

Muokkaus:

Ja sitten jos näin teen kuin lainauksessa eikä mitään muuta, tämä myös kääntää 32bittisenä? Ja pitäisikö jotain vielä lisätä jos prossuna mad64 +3200 venice, vai heikentääkö se tulevaisuuden prossun päivitystä esim. amd64 x2:een, eli joutuisiko silloin kääntämään kaikki uudestaan?

----------

## Obi-Lan

Eikös toi nyt mee silei, että 32-bit gentoon asennat 32-bit medialta ja 64-bit gentoon 64-bit medialta? Ja mä en tota ACCEPT_KEYWORD:sia pistäis make.conffii... ja sen march=athlon-xp?  Ja mielestäni sillä ei kauheesti merkitystä ole mikä prossa siellä alla on kunhan kernel tukee. Tosin itse ainakin otan kaiken hyödyn 64-bit prosessorista käyttämällä 64-bit järjestelmää.

----------

## PaveQ

Hyvin toi 64 bittinen toimii, ja nopeastikkin näin perstuntumalta.   :Smile:  Mitään suurempia ongelmia ei ole ollut ja mitään chroot systeemeitä ei oo tarvinnu tehdä. 

Niin, ja amd64 on yhteensopia 32 bittisten kanssa, muttei 16 tai 8 bittisten. Eli ei tosiaankaan kaikkien x86 prossujen kanssa. Ja 64 bittisessä ympäristössä voi hyvin ajaa 32 bittistä koodia ilman tehonlaskua amd:llä, toisin kuin intellin 64 bittisillä prossuilla.

----------

## Kaapeli

 *PaveQ wrote:*   

> 
> 
> Niin, ja amd64 on yhteensopia 32 bittisten kanssa, muttei 16 tai 8 bittisten. Eli ei tosiaankaan kaikkien x86 prossujen kanssa.

 

Mitenkäs sitten windowssit missä vielä nykypäivänäkin on 16 bittistä koodia luvattoman paljon? Hyvin näyttää toimivan myös amd64 alla. Kyllä se x86 yhteensopivuus tarkoittaa sitä että se todellakin on x86 yhteensopiva, eli osaa ajaa x86 koodia suoraan.

----------

## Paapaa

 *PaveQ wrote:*   

> Niin, ja amd64 on yhteensopia 32 bittisten kanssa, muttei 16 tai 8 bittisten. Eli ei tosiaankaan kaikkien x86 prossujen kanssa. 

 

Ja mihin tuo väite perustuu? Amd:n pressitiedote:

"Compatibility mode supports existing 16-bit and 32-bit applications under a 64-bit operating system. In addition to long mode, the architecture also supports a pure x86 legacy mode, which preserves binary compatibility with existing 16-bit and 32-bit applications and operating systems."

Eli kyllä 8088- ja 8086:kin taipuvat AMD:ltä. 8086 oli käsittääkseni ensimmäinen x86-prossu.

----------

## PaveQ

 *Kaapeli wrote:*   

>  *PaveQ wrote:*   
> 
> Niin, ja amd64 on yhteensopia 32 bittisten kanssa, muttei 16 tai 8 bittisten. Eli ei tosiaankaan kaikkien x86 prossujen kanssa. 
> 
> Mitenkäs sitten windowssit missä vielä nykypäivänäkin on 16 bittistä koodia luvattoman paljon? Hyvin näyttää toimivan myös amd64 alla. Kyllä se x86 yhteensopivuus tarkoittaa sitä että se todellakin on x86 yhteensopiva, eli osaa ajaa x86 koodia suoraan.

 

"Using Long Mode, a 64 bit OS can run 32 bit applications and 64 bit applications simultaneously. Also, x86-64 includes native support for running 16 bit x86 applications. Microsoft, however, has explicitly left out 16 bit program support in Windows XP Professional x64 Edition due to problems in getting 16 bit x86 code to run via their WoW64 Subsystem." Wiki

Ja tämmönen tarkennus vielä:

A number of "system programming" features of the x86 architecture are not used in modern operating systems and are not available on AMD64 in long mode. These include segmented addressing (although the FS and GS segments remain in vestigial form, for compatibility with Windows code), the task state switch mechanism, and Virtual-8086 mode. These features do of course remain fully implemented in "legacy mode," thus permitting these processors to run 32-bit operating systems without modification.

----------

## Kaapeli

Eli tiivistettynä voidaan sanoa että amd64 on täysin x86 yhteensopiva "legacy" moodissa jolloin se todellakin toimii kuin mikä tahansa x86 prosessori. 64bit moodissa (64 bittisen järjestelmän alla) menetetään tukea vanhimmille x86 käskyille, mutta tässä nyt ei ainakaan linuxin alla ole mitään haittaa koska tietääkseni linuxin alla ei ole 16 bittistä koodia käytetty ikinä muutenkaan.

----------

## oggialli

Jep, linuxin kuten useimpien muidenkaan nykyaikaisten *nixien alla ei ole koskaan pystynyt ajamaan 16-bittistä koodia ilman jonkinlaista emulaattoria, ainoa muistinkäyttömalli (x86:lla pl. PAE) on segmentoimaton suojattu 32-bittinen tila.

----------

## oggialli

 *PaveQ wrote:*   

> Niin, ja amd64 on yhteensopia 32 bittisten kanssa, muttei 16 tai 8 bittisten. Eli ei tosiaankaan kaikkien x86 prossujen kanssa. 

 

Kuten sanottua, yhteensopivuus 16-bittisen koodin kanssa löytyy legacy modessa ja sisäisesti 8-bittisiä x86-prossujahan ei ikinä ole ollutkaan. 8088:ssa oli 8-bittinen muistiväylä, mutta se käytti silti samaa käskykantaa ja 16-bittistä aritmetiikkaa kuin 8086:kin.

----------

## mighty96

Eli jos asennan 64bit gentoon, voin ajaa sillä 32bit ohjelmia, esim wine ja w32codecs? jos näin on, niin silloin tietenkin 64bit käyttis alle.

p.s. ainakaan alla olevalla 64bit kubuntulla en saanut toimimaan kumpaakaan, joten wintoosa on vielä toisena käyttiksenä. eli jos mahdollista ajaa 32bit koodia 64bittisellä, niin miten, melko helposti?

----------

## oggialli

32-bittisiä binäärejä voi ajaa ihan suoraan kunhan on kernelissä IA32-tuki päällä ja kaikki tarvittavat kirjastot on myös 32-bittisinä. Tuolla AMD64-foorumilla taitaa olla jotain eksplisiittisempiä guidejakin esim. juuri win32codecs liittyen. Useimmat binäärisoftat kuten esim. Cedega toimivat ihan suoraan, koska ovat yleensä staattisesti linkattuja.

----------

## Obi-Lan

32-bittisiin on omat kikkansa.. Cedegan sivuilla lukee suoraa mikä paketti on suositeltu 64-bit gentoota varten, kopio sen distfiles kansioon ja asentaa emergellä niin hyvin toimii. Win32codecs toimii ainakin mplayerin 32-bittisen binääriversion kanssa..

----------

## Juippisi

 *Obi-Lan wrote:*   

> 32-bittisiin on omat kikkansa.. Cedegan sivuilla lukee suoraa mikä paketti on suositeltu 64-bit gentoota varten, kopio sen distfiles kansioon ja asentaa emergellä niin hyvin toimii. Win32codecs toimii ainakin mplayerin 32-bittisen binääriversion kanssa..

 

Jep.

 *Quote:*   

> joonas@ultima ~ $ cat /etc/portage/package.keywords | grep -i mplayer
> 
> media-video/mplayer-bin ~amd64
> 
> joonas@ultima ~ $ cat /etc/portage/package.keywords | grep -i codec
> ...

 

(En viitsi ajaa unstablea Gentoota)

Mutta, onko kukaan onnistunut saamaan wineä käännettyä? Itse en mitään versiota. Olen myös wgetannut sorsa-paketin ja koittanut sitä kautta kääntää. Olen kokeillut kaikkia keinoja, mitä https://forums.gentoo.org/viewtopic-t-298299-postdays-0-postorder-asc-start-0.html threadissa mainitaan. En minä winellä oikeastaan mitään edes tee, kun on yksi Windows-kone kuitenkin talossa, mutta pelaisin mielummin Age of Empiresiä tällä koneella, kuin pikkusiskoni ;-).

----------

## mokki

Ainakin wine-0.9.5 ja wine-0.9.6 ebuildit ovat kääntyneet ihan ilman kitinää minulla. systeemi on tosin suurelta osin ~amd64:llä rakennetu.

 *Quote:*   

> (En viitsi ajaa unstablea Gentoota) 

 

Itse olen nyt yli 4 vuotta käyttänyt ~amd64 gentoota voin kyllä sanoa ettei mitään paria isompaa kämmähdystä lukuunottamatta (mm. multilib päivitys, joka aiheutti kyllä ongelmia vielä kun se iski stable amd64:llekin) on meno ollut tasaista.

Toki onhan se aina turvallisempaa käyttää vanhoja versioita suurimmasta osasta sovelluksia, mutta silloin suosittelisin debian stablea  :Wink: [/quote]

----------

