int main%28void%29%3Cbr %2F%3E%7B%3Cbr %2F%3E unsigned int R1 %3D 11%2C R2 %3D 40%2C R3 %3D 0xfffffff%3B%3Cbr %2F%3E unsigned long long int summa%3B%3Cbr %2F%3E%3Cbr %2F%3E __asm__ __volatile__%28%3Cbr %2F%3E %26quot%3B push EDI %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E %26quot%3B xor edi%2Cedi %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%09%09 %26quot%3Baddl %25%EDx%2C%25%EAx %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%09%09 %26quot%3Badcl 0%2C%25%EDi %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%3Cbr %2F%3E%09%09 %26quot%3Baddl %25%ECx%2C%25%EAx %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%09%09 %26quot%3Badcl 0%2C%25%EDi %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%3Cbr %2F%3E%09%09 %26quot%3Bmovl %25%EDi%2C%25%EDx %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%09%09 %2F%2F EDX%3AEAX %3D summa%28eax%2C edx%2C ecx%29%3Cbr %2F%3E%3Cbr %2F%3E %26quot%3B pop EDI %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E %26quot%3B mov 1%2C %25%25ESI %3B%5Cn%5Ct%26quot%3B%3Cbr %2F%3E%3Cbr %2F%3E %3A%26quot%3B%3Da%26quot%3B%28summa%29%3Cbr %2F%3E %3A%26quot%3Ba%26quot%3B%28R1%29%2C %26quot%3Bd%26quot%3B%28R2%29%2C %26quot%3Bc%26quot%3B%28R3%29%3Cbr %2F%3E %3A %26quot%3B%25%25ESI%26quot%3B %2F%2F clobber list.%3Cbr %2F%3E %29%3B%3Cbr %2F%3E printf%28%26quot%3BSumma on%3D%25I64u%5Cn%5Ct%26quot%3B%2C summa%29%3B %2F%2F OS%3A Windows%2C 32-Bit. Linuxissa%3A %25llu.%3Cbr %2F%3E return 0%3B%3Cbr %2F%3E%7D%3Cbr %2F%3E%3Cbr %2F%3EToimiiko yll%C3%A4oleva oikein%3F%3Cbr %2F%3E%3Cbr %2F%3ESen olisi tarkoitus laskea 64 -bittinen summa kolmesta 32-bittisest%C3%A4 luvusta%3A%3Cbr %2F%3E%3Cbr %2F%3Esama kuin summa %3D R1 %2B R2 %2B R3%2C%3Cbr %2F%3E%3Cbr %2F%3Emutta siten%2C ett%C3%A4 tuloksen ei sallita %26quot%3Bpy%C3%B6r%C3%A4ht%C3%A4%C3%A4 ymp%C3%A4ri%26quot%3B KUN 32 -BITTINEN LUKUALUE Ylittyy.%3Cbr %2F%3E%3Cbr %2F%3ETarkoitus siis olisi ett%C3%A4 gcc -k%C3%A4%C3%A4nt%C3%A4j%C3%A4 huolehtii siit%C3%A4%2C ett%C3%A4%3A%3Cbr %2F%3E%3Cbr %2F%3Ev%C3%A4litt%C3%B6m%C3%A4sti ennen asm -lohkon alkua%3A%3Cbr %2F%3E%3Cbr %2F%3Emuuttuja R1 ladataan rekisteriin EAX.%3Cbr %2F%3Emuuttuja R2 ladataan rekisteriin EDX.%3Cbr %2F%3Emuuttuja R3 ladataan rekisteriin EDX.%3Cbr %2F%3E%3Cbr %2F%3Eja juuri asm -lohkon j%C3%A4lkeen%3A%3Cbr %2F%3E%3Cbr %2F%3Erekisteriparin EDX%3AEAX sis%C3%A4lt%C3%B6 tallennetaan muuttujaan summa.%3Cbr %2F%3E%3Cbr %2F%3EJa ihan testitarkoituksessa%3A%3Cbr %2F%3EKerrotaan C -k%C3%A4%C3%A4nt%C3%A4j%C3%A4lle%2C ett%C3%A4 asm -lohko k%C3%A4ytt%C3%A4%C3%A4 rekisteri%C3%A4 ESI eik%C3%A4 vaivaudu palauttamaan sen arvoa alkuper%C3%A4iseksi.%3Cbr %2F%3E%3Cbr %2F%3EToimiiko koodi tarkoitetulla tavalla%3F%3Cbr %2F%3E%3Cbr %2F%3EEnt%C3%A4%2C mit%C3%A4 pit%C3%A4isi muuttaa%2C jotta assembly -koodin voisi kirjoittaa intel -syntaksilla tuon at%26amp%3Bt sijasta %3F
assemblykoodi gcc:ssä (Windows; 32-bit)
asm_C_opiskelija
2250
0Äänestä
Muut lukivat myös
Luetuimmat keskustelut
- Älä unohda minuaNainen ethän unohda minua. Asiat olisivat voineet mennä toisin, olisi vain pitänyt uskaltaa lähestyä sinua kun annoit siihen mahdollisuuden. Olen pettynyt itseeni, ja se kyllä närästää. Naiselle Mieheltä
- Eläkeikä nousee 70 vuoteen. Joudunko palaamaan työelämään?Nyt se on sitten päätetty, että eläkeikä Suomessa nostetaan 70 vuoteen. https://www.is.fi/politiikka/art-2000012324133.html Pääsin 67 vuotiaana eläkkeelle viime syksynä. Tarkoittaakohan tämä, että joudun palaamaan takai…
- Nyt on nytTurha miettiä menneitä tapahtumia. Niitä ei saa tekemättömäksi. Tärkeintä on mitä tekee nyt ja tulevaisuudessa. Korjausliikkeetkin voi tehdä jos niihin tuntee tarvetta. Paluu tulevaisuuteenkin voi olla mahdollinen jos v…
- Kadutko mies?Silloin kuin vielä yritin lähestyä, etkä tarttunut siihen. Asioista pitäisi voida aina keskustella.
- Perussuomalaiset nostamassa eläkeiän 70 vuoteenRiikka Purran johtama valtiovarainministeriö haluaa nostaa eläkeiän 70 vuoteen ja taloutta sopeutettaisiin ensi vaalikaudella 8–11 miljardilla eurolla. Perussuomalaisten johtama ministeriö ilmeisesti arvelee, että seits…
- Hyvää huomentaEräälle Naiselle ❤️🩹
- Pitäisikö Vantaa liittää Helsinkiin.Mitä mieltä olette asiasta?
- Moi kulta😍Eikös se ollut marraskuuta kun se meidän "flirttailu" alkoi silloin vuosia sitten? tarkoitan lähinnä niitä pitkiä katseita 🤩☺️ Kohta on siis maata mullistavien katseiden vuosipäivä 😘🤭
- Niin haluaisin sut nähdä ja jutella!🙂
- Empaattiset ihmisetOnko empaattiset ihmiset, etenkin naiset antavaisempia, kun ns. tavikset? Kaverin puolesta kysyn Oisko niinku mahkui?
- Onko tällainen kuvio teistä okOnko tällainen kuvio teidän mielestänne ihan normaali ja hyväksyttävä? Nainen seurustelee miehen kanssa, mutta pitää samaan aikaan läheistä yhteyttä toiseen mieheen kertomatta tälle toiselle, että on parisuhteessa. Tämä…
- Tuntuu kuin olisin vaimosiSe on erikoista se.
- Haluatko ettäUnohdetaan toisemme?
- TTK-juontaja Veronica Verho lataa suorat sanat tatuointien arvostelijoille: "Mä toivoisin, että..."Veronica Verho juontaa Tanssii Tähtien Kanssa -ohjelmaa yhdessä Ernest Lawsonin kanssa. Yksi puhuttaneimmista aiheista on ollut, miten suosikkijuontajan näyttävät tatuoinnit sopivat ohjelman pukuohjeistukseen ja tullaa…
- Et nosta minua ylösOk ei se mitään. Vajoan syvempiin vesiin💔
- Jos haluat viestin...Olen vielä tämän illan palstalla. Laita halutessasi vinkki, sinä komea keski-ikäinen mies 😗
- Tunnut niinKaukaiselta jo.
- Nyt kun kaikki on ohiToivon, että sulla menee hyvin ja pystyisin sinut kokonaan unohtamaan. Joskus on vaikeita hetkiä ja olen tosi pahoillani, miten sinua loukkasin ja loukkaan yhä. Se täytyy saada loppumaan.
- Anonyymipalstan ongelmaJoskus tämä palsta on kyllä melkoinen ihmiskoe. Yksi ihminen yrittää saada yhteyttä yhteen tiettyyn henkilöön ja antaa tunnisteitakin, mutta hetken päästä ketjussa on jo puoli Suomea vastaamassa kuin viesti olisi tarkoi…
- Sut tahtoisinSinä senkin kusimutteri menit ja katkaisit kaiken yhteyden minuun. Tajuan nyt, että meidän roolit vaihtuivat ja sinä projektoit omia pelkojasi minuun. Anna minun välittää sinusta, älä työnnä mua pois. En oo vaatinut sul…
Vastaukset 2
Vanhimmat
int main(void)
{
unsigned int R1 = 11, R2 = 40, R3 = 0xfffffff;
unsigned long long int summa;
__asm__ __volatile__(
" push EDI ;\n\t"
" xor edi,edi ;\n\t"
"addl @@edx,@@eax ;\n\t"
"adcl 0,@@edi ;\n\t"
"addl @@ecx,@@eax ;\n\t"
"adcl 0,@@edi ;\n\t"
"movl @@edi,@@edx ;\n\t"
// EDX:EAX = summa(eax, edx, ecx)
" pop EDI ;\n\t"
" mov 1, @@ESI ;\n\t"
:"=a"(summa)
:"a"(R1), "d"(R2), "c"(R3)
: "@@ESI" // clobber list.
);
printf("Summa on=@I64u\n\t", summa); // OS: Windows, 32-Bit. Linuxissa: @llu.
return 0;
}
VALITETTAVASTI suomi24 -forumohjelmisto sekoilee jälleen !
Alkuperäisessä viestissä C -lähdekoodissa olleet prosenttimerkit (jotka ikävä kyllä kuuluvat at&t syntaksiin assemblykielessä) aiheuttivat koko viestin sotkeutumisen.
Tässä sama viesti uudelleen siten, että jokainen prosenttimerkki on korvattu ät -merkillä.
Ensinnäkin miksi laitat push-komennolla tuon EDI-rekisterin pinoon jota et käytä lainkaan?
Aivan joo mutta ei kannattaisi indeksirekistereitä, hitaampia käyttää tuolla tavoin, olisit käyttänyt laskennassa rekisteriä EEAX.