projects
/
uebersetzerbau-ss10.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c57a701
)
asmb: more hax
author
Bernhard Urban
<lewurm@gmail.com>
Sun, 14 Mar 2010 18:23:26 +0000
(19:23 +0100)
committer
Bernhard Urban
<lewurm@gmail.com>
Sun, 14 Mar 2010 18:24:45 +0000
(19:24 +0100)
asmb/asmb.s
patch
|
blob
|
history
diff --git
a/asmb/asmb.s
b/asmb/asmb.s
index 027a99931de03b05994c876963455d8e1fa7c3b4..8fb92b199a473241013aeb4388f95ef5258e55e3 100644
(file)
--- a/
asmb/asmb.s
+++ b/
asmb/asmb.s
@@
-23,11
+23,12
@@
const00:
.type asmb, @function
asmb:
.LFB2:
.type asmb, @function
asmb:
.LFB2:
- xor %rdx, %rdx
+ //speicheradresse des parameters zurueckgeben
+ mov %rdi, %rax
.nextround:
//speicheradresse des pointers zeigt auf 16*8 feld = 128bit
.nextround:
//speicheradresse des pointers zeigt auf 16*8 feld = 128bit
- movdqu (%rdi
, %rdx, 8
), %xmm11
+ movdqu (%rdi), %xmm11
// -64 - c
movdqa constc0, %xmm9
// -64 - c
movdqa constc0, %xmm9
@@
-46,20
+47,17
@@
asmb:
paddb %xmm9, %xmm11
// retuniere an die richtige speicheradresse
paddb %xmm9, %xmm11
// retuniere an die richtige speicheradresse
- movdqu %xmm11, (%rdi
, %rdx, 8
)
+ movdqu %xmm11, (%rdi)
//entspricht ein byte dem nullbyte dann steht an jener stelle 0xff sonst 0x00
pcmpeqb const00, %xmm11
//hol die MSBs aller bytes raus
pmovmskb %xmm11, %ecx
//entspricht ein byte dem nullbyte dann steht an jener stelle 0xff sonst 0x00
pcmpeqb const00, %xmm11
//hol die MSBs aller bytes raus
pmovmskb %xmm11, %ecx
- add $
2, %rdx
+ add $
16, %rdi
//ist %ecx gleich null? dann die naechsten 16byte bitte
jecxz .nextround
//ist %ecx gleich null? dann die naechsten 16byte bitte
jecxz .nextround
- //speicheradresse des parameters zurueckgeben (wird noch modifziert)
- mov %rdi, %rax
-
/*
//===============
//ab hier uebler hax um nach \0 trotzdem die gleichen bytes wie
/*
//===============
//ab hier uebler hax um nach \0 trotzdem die gleichen bytes wie
@@
-115,12
+113,12
@@
asmb:
.endshift:
//betreffende speicherstelle in %xmm11 laden
.endshift:
//betreffende speicherstelle in %xmm11 laden
- movdqu -16(%r
ax, %rdx, 8
), %xmm11
+ movdqu -16(%r
di
), %xmm11
//und overhead wieder subtrahieren
psubb %xmm9, %xmm11
//ergebnis zurueckspielen und fertig \o/
//und overhead wieder subtrahieren
psubb %xmm9, %xmm11
//ergebnis zurueckspielen und fertig \o/
- movdqu %xmm11, -16(%r
ax, %rdx, 8
)
+ movdqu %xmm11, -16(%r
di
)
*/
ret
*/
ret