teepä nopeampi koodi tästä rivistä:

_asm { nop, nop};

tee nopeampi.
Ilmianna
Jaa

8 Vastausta



Tässä:
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Wow, QUINE
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
NOP ei tee mitään, mutta yhden käskyn ikuinen silmukka, joka toistaisi itseään, tekee (siis toistaisi itseään, mikä lasketaan tekemiseksi).
Ilmianna
Jaa
Jokanen operaatio/käsky vie aina jonkin verran suoritin aikaa, joten tyhjä/hyppy yli olisi nopeampi, koska ei käskyä...
Ilmianna
Jaa
NOP on yhden kellojakson kestävä viive, joka ei tee yhtäänj mitään, ei sitä voi lyhentää, kuin jättämällä toisen NOP käskyn pois.
Ilmianna
Jaa
turha kiistellä nopeudesta!

Mutta joskus on parempi:

rep nop

miksikö?

REP nop:in edellä kertoo CPU:lle: minimoi turha virrankulutus.

jos CPU on niin vanha, ettei tue tuota, niin silloin REP NOP suoritetaan kuten NOP.

esimerkki:

@@1:
rep nop
in AL, DX
and AL, 1
jz @@1

tuo on virtaa säästävämpi tapa odottaa, kunnes portissa jonka osoite on DX:ssä, alin databitti on muuttunut ykköseksi.
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Tuohon on nyt pakko vähän saivarrellakin, (sori en mahtanut itselleni mitään) sillä rep nop ei aivan ole sama koska se vie 2 tavua ja nop vain yhden. Aloituksen tekijä haasto lyhentämään tuota, ei pitentämään.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
kas näin:

procedure TuplaNop;
asm
MOV EDI, EDI // jos 64-bit sovellus, silloin MOV RDI, RDI
end;

jotkut käyttävät myös REP NOP.
Ilmianna
Jaa

Vastaa alkuperäiseen viestiin

teepä nopeampi koodi tästä rivistä:

_asm { nop, nop};

tee nopeampi.

5000 merkkiä jäljellä

Peruuta