projects
/
uebersetzerbau-ss10.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
asmb: hint von martin perner (btr statt cmp/sub) und gistupdate von ihm
[uebersetzerbau-ss10.git]
/
asmb
/
asmb.s
diff --git
a/asmb/asmb.s
b/asmb/asmb.s
index e94d189c7f0b9bf56cbe620177e8b9760d984400..540a28fbccad1658866753fc016b6727ecacf860 100644
(file)
--- a/
asmb/asmb.s
+++ b/
asmb/asmb.s
@@
-81,52
+81,44
@@
asmb:
//hint: in %xmm15 ist differenz gespeichert (vgl .differenz)
//leider shiften nur mit immediate! :(
//hint: in %xmm15 ist differenz gespeichert (vgl .differenz)
//leider shiften nur mit immediate! :(
-
cmp $8
, %r11d
- jc .rechtsshift1
+
btr $3
, %r11d
+ j
n
c .rechtsshift1
psrldq $8, %xmm15
psrldq $8, %xmm15
- sub $8, %r11d
.rechtsshift1:
.rechtsshift1:
-
cmp $4
, %r11d
- jc .rechtsshift2
+
btr $2
, %r11d
+ j
n
c .rechtsshift2
psrldq $4, %xmm15
psrldq $4, %xmm15
- sub $4, %r11d
.rechtsshift2:
.rechtsshift2:
-
cmp $2
, %r11d
- jc .rechtsshift3
+
btr $1
, %r11d
+ j
n
c .rechtsshift3
psrldq $2, %xmm15
psrldq $2, %xmm15
- sub $2, %r11d
.rechtsshift3:
.rechtsshift3:
-
cmp $1
, %r11d
- jc .linksshift
+
btr $0
, %r11d
+ j
n
c .linksshift
psrldq $1, %xmm15
psrldq $1, %xmm15
- sub $1, %r11d
#==================
.linksshift:
#==================
.linksshift:
-
cmp $8
, %ecx
- jc .linksshift1
+
btr $3
, %ecx
+ j
n
c .linksshift1
pslldq $8, %xmm15
pslldq $8, %xmm15
- sub $8, %ecx
.linksshift1:
.linksshift1:
-
cmp $4
, %ecx
- jc .linksshift2
+
btr $2
, %ecx
+ j
n
c .linksshift2
pslldq $4, %xmm15
pslldq $4, %xmm15
- sub $4, %ecx
.linksshift2:
.linksshift2:
-
cmp $2
, %ecx
- jc .linksshift3
+
btr $1
, %ecx
+ j
n
c .linksshift3
pslldq $2, %xmm15
pslldq $2, %xmm15
- sub $2, %ecx
.linksshift3:
.linksshift3:
-
cmp $1
, %ecx
- jc .endshift
+
btr $0
, %ecx
+ j
n
c .endshift
pslldq $1, %xmm15
pslldq $1, %xmm15
- sub $1, %ecx
.endshift:
//betreffende speicherstelle in %xmm11 laden
.endshift:
//betreffende speicherstelle in %xmm11 laden