Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
flac
Commits
0bddabc5
Commit
0bddabc5
authored
Mar 23, 2007
by
Josh Coalson
Browse files
minor optimizations
parent
49cb34a5
Changes
1
Show whitespace changes
Inline
Side-by-side
src/libFLAC/ia32/bitreader_asm.nasm
View file @
0bddabc5
...
...
@@ -134,11 +134,9 @@ cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
jz
near
.break1
; if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */
; crc16_update_word_(br, br->buffer[cwords]);
push
edi
; [need more registers]
push
ecx
; [need more registers]
bswap
edx
; edx = br->buffer[cwords] swapped; now we can CRC the bytes from LSByte to MSByte which makes things much easier
mov
ecx
,
[
ebp
+
28
]
; ecx <- br->crc16_align
mov
eax
,
[
ebp
+
24
]
; ax <- br->read_crc (a.k.a. crc)
xor
ebx
,
ebx
; [code from here down assumes and requires that the top 24 bits of ebx stay zero]
mov
edi
,
FLAC__crc16_table
;; eax (ax) crc a.k.a. br->read_crc
;; ebx (bl) intermediate result index into FLAC__crc16_table[]
...
...
@@ -170,8 +168,8 @@ cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
mov
ecx
,
[
ebx
*
4
+
edi
]
; cx <- FLAC__crc16_table[(crc>>8)^(word&0xff)]
shl
eax
,
8
; ax <- (crc<<8)
xor
eax
,
ecx
; crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word&0xff)]
mov
[
ebp
+
24
],
ax
; br->read_crc <- crc
pop
ecx
mov
zx
eax
,
ax
mov
[
ebp
+
24
],
eax
; br->read_crc <- crc
pop
edi
add
esi
,
1
; cwords++;
...
...
@@ -208,11 +206,9 @@ cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
sub
edi
,
ecx
; uval += FLAC__BITS_PER_WORD - cbits;
; crc16_update_word_(br, br->buffer[cwords]);
push
edi
; [need more registers]
push
ecx
; [need more registers]
bswap
edx
; edx = br->buffer[cwords] swapped; now we can CRC the bytes from LSByte to MSByte which makes things much easier
mov
ecx
,
[
ebp
+
28
]
; ecx <- br->crc16_align
mov
eax
,
[
ebp
+
24
]
; ax <- br->read_crc (a.k.a. crc)
xor
ebx
,
ebx
; [code from here down assumes and requires that the top 24 bits of ebx stay zero]
mov
edi
,
FLAC__crc16_table
;; eax (ax) crc a.k.a. br->read_crc
;; ebx (bl) intermediate result index into FLAC__crc16_table[]
...
...
@@ -244,8 +240,8 @@ cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
mov
ecx
,
[
ebx
*
4
+
edi
]
; cx <- FLAC__crc16_table[(crc>>8)^(word&0xff)]
shl
eax
,
8
; ax <- (crc<<8)
xor
eax
,
ecx
; crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word&0xff)]
mov
[
ebp
+
24
],
ax
; br->read_crc <- crc
pop
ecx
mov
zx
eax
,
ax
mov
[
ebp
+
24
],
eax
; br->read_crc <- crc
pop
edi
add
esi
,
1
; cwords++;
...
...
@@ -418,12 +414,10 @@ cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
; crc16_update_word_(br, br->buffer[cwords]);
push
edi
; [need more registers]
push
ebx
; [need more registers]
push
ecx
; [need more registers]
push
eax
; [need more registers]
bswap
edx
; edx = br->buffer[cwords] swapped; now we can CRC the bytes from LSByte to MSByte which makes things much easier
mov
ecx
,
[
ebp
+
28
]
; ecx <- br->crc16_align
mov
eax
,
[
ebp
+
24
]
; ax <- br->read_crc (a.k.a. crc)
xor
ebx
,
ebx
; [code from here down assumes and requires that the top 24 bits of ebx stay zero]
mov
edi
,
FLAC__crc16_table
;; eax (ax) crc a.k.a. br->read_crc
;; ebx (bl) intermediate result index into FLAC__crc16_table[]
...
...
@@ -455,9 +449,9 @@ cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
mov
ecx
,
[
ebx
*
4
+
edi
]
; cx <- FLAC__crc16_table[(crc>>8)^(word&0xff)]
shl
eax
,
8
; ax <- (crc<<8)
xor
eax
,
ecx
; crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word&0xff)]
mov
[
ebp
+
24
],
ax
; br->read_crc <- crc
movzx
eax
,
ax
mov
[
ebp
+
24
],
eax
; br->read_crc <- crc
pop
eax
pop
ecx
pop
ebx
pop
edi
add
esi
,
1
; cwords++;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment