het moest er maar eens van komen, ik heb me voorgenomen wat asm te gaan leren 
ik wilde beginnen met wat simpel vervangwerk van kleine code snippets, maar zelfs daar loop ik al tegen problemen op
wat ik met mijn huidige kennis gedaan dacht te hebben:
helaas vindt gcc dat dit een slecht plan is:
alvast bedankt!
ik wilde beginnen met wat simpel vervangwerk van kleine code snippets, maar zelfs daar loop ik al tegen problemen op
C++:
1
2
3
4
5
6
7
8
9
| // if( a > b ) c = a - b; asm("cmp %1, %2\n\t" "jnbe skipAddition\n\t" "add %0, %1\n\t" "sub %0, %2\n\t" "skipAddition:" : "=a"(c) : "b"(a), "m"(b) ); |
wat ik met mijn huidige kennis gedaan dacht te hebben:
code:
1
2
3
4
5
| c++ equivalent van wat ik probeer te doen vergelijk a met b als a kleiner of gelijk is aan b, ga naar skipAddition tel c+a op en sla dit op in c trek b van c af en sla dit op in c |
helaas vindt gcc dat dit een slecht plan is:
ik had echter gevonden dat het optellen van twee registers geen probleem zou moeten zijnError: suffix or operands invalid for `add'
dus mijn vraag: waarom snapt gcc deze opdracht nietadd reg, reg
add reg, mem
add mem, reg
add reg, immediate data
add mem, immediate data
add eax/ax/al, immediate data
alvast bedankt!
oprecht vertrouwen wordt nooit geschaad