Ik probeer om een register te vullen met 1en of 0en obv de waarde in de least-significant-bit zonder gebruik te maken van conditional jumps of conditional moves. De manier waarop ik het nu voor elkaar heb gekregen vind ik niet erg fraai en was benieuwd of iemand tips heeft om het beter op te lossen.
Na het uitvoeren van deze code bevat rcx of allemaal 0en of 1en, precies wat ik wil, maar volgens mij moet dit makkelijker (en sneller) kunnen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ; compare values test [rdx], rax ; if values are equal set cl to 00000001 sete cl ; rotate cl to flip value to 10000000 ror cl, 1 ; sign-extend cl to 11111111....10000000 movsx rcx, cl ; set lower 8 bits to higer 8 bits 11111111....11111111 mov cl, ch |
Na het uitvoeren van deze code bevat rcx of allemaal 0en of 1en, precies wat ik wil, maar volgens mij moet dit makkelijker (en sneller) kunnen.