Skip to content
Snippets Groups Projects
Commit ff3ef3d5 authored by Niels Möller's avatar Niels Möller
Browse files

* x86/machine.m4 (AES_ROUND): New macro.

Rev: src/nettle/x86/machine.m4:1.5
parent c90b962b
No related branches found
No related tags found
No related merge requests found
dnl AES_LAST_ROUND(a, b, c, d)
dnl Leaves result in %edi
dnl Note that we have to quote $ in constants.
define(<AES_LAST_ROUND>, <
movl %e<>$1<>x,%edi
andl <$>0x000000ff,%edi
movl %e<>$2<>x,%ebp
andl <$>0x0000ff00,%ebp
orl %ebp,%edi
movl %e<>$3<>x,%ebp
andl <$>0x00ff0000,%ebp
orl %ebp,%edi
movl %e<>$4<>x,%ebp
andl <$>0xff000000,%ebp
orl %ebp,%edi>)dnl
dnl AES_LOAD(key, src)
dnl Loads the next block of data from src, and add the subkey pointed
dnl to by key.
......@@ -45,3 +29,40 @@ define(<AES_STORE>, <
movl %ebx,4($2)
movl %ecx,8($2)
movl %edx,12($2)>)dnl
dnl AES_ROUND(table,a,b,c,d)
dnl Computes one word of the AES round. Leaves result in %edi.
define(<AES_ROUND>, <
movl %e<>$2<>x, %esi
andl <$>0xff, %esi
shll <$>2,%esi C index in table
movl AES_TABLE0 + $1 (%esi),%edi
movl %e<>$3<>x, %esi
shrl <$>6,%esi
andl <$>0x000003fc,%esi C clear all but offset bytes
xorl AES_TABLE1 + $1 (%esi),%edi
movl %e<>$4<>x,%esi C third one
shrl <$>14,%esi
andl <$>0x000003fc,%esi
xorl AES_TABLE2 + $1 (%esi),%edi
movl %e<>$5<>x,%esi C fourth one
shrl <$>22,%esi
andl <$>0x000003fc,%esi
xorl AES_TABLE3 + $1 (%esi),%edi>)dnl
dnl AES_LAST_ROUND(a, b, c, d)
dnl Computes one word of the final round. Leaves result in %edi.
dnl Note that we have to quote $ in constants.
define(<AES_LAST_ROUND>, <
movl %e<>$1<>x,%edi
andl <$>0x000000ff,%edi
movl %e<>$2<>x,%ebp
andl <$>0x0000ff00,%ebp
orl %ebp,%edi
movl %e<>$3<>x,%ebp
andl <$>0x00ff0000,%ebp
orl %ebp,%edi
movl %e<>$4<>x,%ebp
andl <$>0xff000000,%ebp
orl %ebp,%edi>)dnl
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment