Kezdőoldal » Számítástechnika » Programozás » Mikor nem alkalmazható két...

Mikor nem alkalmazható két adat felcserélésére a xor művelet?

Figyelt kérdés

2022. nov. 12. 14:04
 1/9 A kérdező kommentje:
bruh, parciálist írok jövőhéten és ötletem sincs mi ez :)))
2022. nov. 12. 14:27
 2/9 anonim ***** válasza:
27%
Ha megegyezik a két adat például.
2022. nov. 12. 15:04
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
45%

Nem tudom, hogy ki volt az , aki töröltette az előző válaszomat?

Kérdező: Vajon mikor nem lehet két adatot az említett művelettel felcserélni?


Talán akkor, amikor a két adat tipusa nem egyezik, vagy amikor a két adat tipusa egyezik ugyan, de nem hajtható végre rajtuk a kivánt művelet.

Vagy mondjuk akkor, amikor architekturálisan nincs erre lehetőség.

2022. nov. 12. 15:27
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
40%

A dolog jelentősége assembly szinten annyi, hogy két regiszter tartalmát lehet így felcserélni, kis költséggel, a MOV utasítás és extra memóriahely (magasabb szinten segédváltozó) használata nélkül.


xor ax,bx

xor bx,ax

xor ax,bx

2022. nov. 12. 16:03
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
75%

Ja, csak rosszabb, hibás, és lassabb.

Olvasd el ezt: [link]

2022. nov. 12. 18:10
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:
47%

"Ja, csak rosszabb, hibás, és lassabb."


Nem ez volt a dolog lényege. A kérdésben ez szerepel.

Azon tól, az is hülyeség, hogy feltétlenül rosszabb, hibás és lassabb lenne.


Eleve, architektúrától függ, hogy lassabb-e vagy sem. Ugyanis, nem csak x86-os (x64) PC van a világon.

Szintén architektúrától függ, hogy megéri-e használni, mert bizony, van olyan kontroller, aminek a regisztere is és a RAM-ja is kevés, pl. csak 32 bájt, már pedig ilyenkor számíthat egy-két bájt mozgatása, tárolása is.


Az biztos, hogy hülye aki egy STM32-n használja, magas szinten, mondjuk C nyelvben, bájtos értékekre, de az már nem, aki pl. egy ST6-on szeretne így helyet spórolni, mert abban csak 64 bájt RAM van.

2022. nov. 12. 18:40
Hasznos számodra ez a válasz?
 7/9 x0 ***** válasza:

Ha nagy a mérete, és emiatt nem elemi típus, nem fér el 1 regiszterben, akkor ha párhuzamosan lehetnek más folyamatok is, akkor azok részlegesen felcseréltet láthatnak, ami sokszor nem jó. Ekkor zárolni kell, és úgy lehet.


Ha assembly kérdés: ha mindkettő a memóriában van, akkor ugye nincs xor mem,mem utasítás.


Ha magasszintű nyelvi kérdés: amikor konvertálni kell a típust, például az egyik egész, másik valós. Vagy ha van konstruktor, destruktor, = operátor, stb. Ezen esetekben a mérete is más lehet.

2022. nov. 18. 21:44
Hasznos számodra ez a válasz?
 8/9 x0 ***** válasza:

Na hogy sikerült? És ott mi volt az elvárás: a tanár szerint mi a helyes válasz? És mi az a parciális?


Egyébként félig felcseréltet láthat megszakítás, callback függvény, stb. miatt is, nem csak párhuzamosság miatt. Az optimalizációknál fontos, hogy ha mondjuk méretre optimalizálunk, és a kód meg hosszabb lesz, akkor lehet hogy optimalizálás helyett épp rontottunk. Egyébként itt a legfontosabb, hogy egy változót ne önmagával cseréljünk fel, mert annál hibás. 2 regiszterre jó, 2 memóriatartalmat felcserélni lassabb mint a hagyományos segédváltozós. Ha pedig mindig cserélni kell, akkor a fordító tudhatja is hogy felcseréltük és kész: valójában nem cseréli fel, nem végez műveletet, csak tudja hogy innentől kezdve a másik regiszterben van és kész. Attól hogy változó, még nem kell a memóriában legyen, lehet hogy csak regiszterben lesz, nem is lesz címe. Esetleg még akkor se ha a címére hivatkozunk hogy egy függvénynek átadjuk hogy hova írjon be valamit, vagy referenciával is lehet. Jók azok a fordító által végzett optimalizációk.

2022. dec. 23. 22:04
Hasznos számodra ez a válasz?
 9/9 x0 ***** válasza:
El kellett volna olvasnom a régi válaszokat. 5-ös megírta a választ: egy változót önmagával felcserélve hibás: 0 lesz.
2023. ápr. 14. 09:01
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!