430 lines
No EOL
8.4 KiB
Text
430 lines
No EOL
8.4 KiB
Text
import "./binary/not.code" as NOT
|
|
import "./binary/and.code" as AND
|
|
import "./binary/or.code" as OR
|
|
import "./binary/xor.code" as XOR
|
|
import "./binary/fulladd.code" as FULLADD
|
|
import "./bitwise/32/not.code" as NOT
|
|
import "./utils/32/ar6xar11xar25.code" as AR6XAR11XAR25
|
|
import "./utils/32/ar2xar13xar22.code" as AR2XAR13XAR22
|
|
import "./utils/32/ar7xar18xars3.code" as AR7XAR18XAR3
|
|
import "./utils/32/ar17xar19xars10.code" as AR17XAR19XAR10
|
|
import "./utils/32/add.code" as ADD
|
|
import "./bitwise/32/xor.code" as XOR
|
|
import "./bitwise/32/andxornotand.code" as ANDXORNOTAND
|
|
import "./bitwise/32/andxorandxorand.code" as ANDXORANDXORAND
|
|
import "./bitwise/32/copy.code" as COPY
|
|
import "./utils/32/extend.code" as EXTEND
|
|
|
|
def ANDtest() -> (field):
|
|
1 == AND(1, 1)
|
|
0 == AND(1, 0)
|
|
0 == AND(0, 1)
|
|
0 == AND(0, 0)
|
|
return 1
|
|
|
|
def ORtest() -> (field):
|
|
1 == OR(1, 0)
|
|
1 == OR(0, 1)
|
|
0 == OR(0, 0)
|
|
1 == OR(1, 1)
|
|
return 1
|
|
|
|
def XORtest() -> (field):
|
|
1 == XOR(1, 0)
|
|
0 == XOR(0, 0)
|
|
1 == XOR(0, 1)
|
|
0 == XOR(1, 1)
|
|
return 1
|
|
|
|
|
|
def NOTtest() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = NOT(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
|
b18 == 1
|
|
b17 == 1
|
|
b16 == 1
|
|
b15 == 1
|
|
b14 == 1
|
|
b13 == 1
|
|
return 1
|
|
|
|
def FULLADDtest() -> (field):
|
|
a, b = FULLADD(0,0,0)
|
|
a == 0
|
|
b == 0
|
|
a, b = FULLADD(0,0,1)
|
|
a == 1
|
|
b == 0
|
|
a, b = FULLADD(0,1,0)
|
|
a == 1
|
|
b == 0
|
|
a, b = FULLADD(0,1,1)
|
|
a == 0
|
|
b == 1
|
|
a, b = FULLADD(1,0,0)
|
|
a == 1
|
|
b == 0
|
|
a, b = FULLADD(1,0,1)
|
|
a == 0
|
|
b == 1
|
|
a, b = FULLADD(1,1,0)
|
|
a == 0
|
|
b == 1
|
|
a, b = FULLADD(1,1,1)
|
|
a == 1
|
|
b == 1
|
|
return 1
|
|
def AR6XORAR11XORAR25test() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = AR6XAR11XAR25(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1)
|
|
b31 == 1
|
|
b30 == 1
|
|
b29 == 0
|
|
b28 == 1
|
|
b27 == 0
|
|
b26 == 0
|
|
b25 == 1
|
|
b24 == 1
|
|
b23 == 1
|
|
b22 == 1
|
|
b21 == 1
|
|
b20 == 0
|
|
b19 == 1
|
|
b18 == 0
|
|
b17 == 1
|
|
b16 == 0
|
|
b15 == 1
|
|
b14 == 1
|
|
b13 == 1
|
|
b12 == 0
|
|
b11 == 0
|
|
b10 == 1
|
|
b9 == 0
|
|
b8 == 0
|
|
b7 == 1
|
|
b6 == 1
|
|
b5 == 1
|
|
b4 == 0
|
|
b3 == 0
|
|
b2 == 1
|
|
b1 == 1
|
|
b0 == 1
|
|
return 1
|
|
|
|
def AR2XORAR13XORAR22test() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = AR2XAR13XAR22(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1)
|
|
b31 == 0
|
|
b30 == 0
|
|
b29 == 0
|
|
b28 == 1
|
|
b27 == 1
|
|
b26 == 1
|
|
b25 == 1
|
|
b24 == 0
|
|
b23 == 1
|
|
b22 == 1
|
|
b21 == 1
|
|
b20 == 1
|
|
b19 == 0
|
|
b18 == 1
|
|
b17 == 1
|
|
b16 == 0
|
|
b15 == 1
|
|
b14 == 0
|
|
b13 == 0
|
|
b12 == 1
|
|
b11 == 1
|
|
b10 == 1
|
|
b9 == 1
|
|
b8 == 1
|
|
b7 == 0
|
|
b6 == 1
|
|
b5 == 1
|
|
b4 == 1
|
|
b3 == 1
|
|
b2 == 0
|
|
b1 == 1
|
|
b0 == 1
|
|
return 1
|
|
|
|
def AR7XORAR18XORAR3test() -> (field):
|
|
// s0 of last digest message of empty message
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = AR7XAR18XAR3(1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,0,1)
|
|
b31 == 0
|
|
b30 == 1
|
|
b29 == 1
|
|
b28 == 0
|
|
b27 == 0
|
|
b26 == 0
|
|
b25 == 1
|
|
b24 == 1
|
|
b23 == 1
|
|
b22 == 1
|
|
b21 == 1
|
|
b20 == 1
|
|
b19 == 1
|
|
b18 == 0
|
|
b17 == 1
|
|
b16 == 1
|
|
b15 == 0
|
|
b14 == 1
|
|
b13 == 0
|
|
b12 == 1
|
|
b11 == 0
|
|
b10 == 0
|
|
b9 == 1
|
|
b8 == 1
|
|
b7 == 1
|
|
b6 == 1
|
|
b5 == 1
|
|
b4 == 0
|
|
b3 == 1
|
|
b2 == 1
|
|
b1 == 1
|
|
b0 == 1
|
|
return 1
|
|
|
|
def AR17XORAR19XORAR10test() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = AR17XAR19XAR10(1,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0)
|
|
b31 == 0
|
|
b30 == 1
|
|
b29 == 0
|
|
b28 == 1
|
|
b27 == 0
|
|
b26 == 1
|
|
b25 == 1
|
|
b24 == 0
|
|
b23 == 0
|
|
b22 == 1
|
|
b21 == 0
|
|
b20 == 0
|
|
b19 == 0
|
|
b18 == 1
|
|
b17 == 0
|
|
b16 == 1
|
|
b15 == 1
|
|
b14 == 1
|
|
b13 == 1
|
|
b12 == 1
|
|
b11 == 1
|
|
b10 == 0
|
|
b9 == 0
|
|
b8 == 1
|
|
b7 == 0
|
|
b6 == 1
|
|
b5 == 0
|
|
b4 == 1
|
|
b3 == 1
|
|
b2 == 1
|
|
b1 == 0
|
|
b0 == 0
|
|
return 1
|
|
|
|
// 00000101000010001001010101000010 -> 01011000000010000000000000000000 DOESN'T PASS
|
|
// 00100010000000000000100000000000 -> 00000101000010001001010101000010 PASSES
|
|
|
|
def AR17XORAR19XORAR10testnull() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = AR17XAR19XAR10(0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0)
|
|
b31 == 0
|
|
b30 == 1
|
|
b29 == 0
|
|
b28 == 1
|
|
b27 == 1
|
|
b26 == 0
|
|
b25 == 0
|
|
b24 == 0
|
|
b23 == 0
|
|
b22 == 0
|
|
b21 == 0
|
|
b20 == 0
|
|
b19 == 1
|
|
b18 == 0
|
|
b17 == 0
|
|
b16 == 0
|
|
b15 == 0
|
|
b14 == 0
|
|
b13 == 0
|
|
b12 == 0
|
|
b11 == 0
|
|
b10 == 0
|
|
b9 == 0
|
|
b8 == 0
|
|
b7 == 0
|
|
b6 == 0
|
|
b5 == 0
|
|
b4 == 0
|
|
b3 == 0
|
|
b2 == 0
|
|
b1 == 0
|
|
b0 == 0
|
|
return 1
|
|
|
|
def ADDtest() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = ADD(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1)
|
|
b31 == 1
|
|
b30 == 0
|
|
b29 == 1
|
|
b28 == 0
|
|
b27 == 1
|
|
b26 == 0
|
|
b25 == 0
|
|
b24 == 0
|
|
b23 == 1
|
|
b22 == 0
|
|
b21 == 1
|
|
b20 == 0
|
|
b19 == 1
|
|
b18 == 1
|
|
b17 == 0
|
|
b16 == 0
|
|
b15 == 0
|
|
b14 == 1
|
|
b13 == 0
|
|
b12 == 0
|
|
b11 == 0
|
|
b10 == 1
|
|
b9 == 0
|
|
b8 == 0
|
|
b7 == 1
|
|
b6 == 1
|
|
b5 == 0
|
|
b4 == 1
|
|
b3 == 1
|
|
b2 == 0
|
|
b1 == 1
|
|
b0 == 0
|
|
return 1
|
|
|
|
def COPYtest() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = COPY(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
|
b18 == 0
|
|
b17 == 0
|
|
b16 == 1
|
|
b15 == 0
|
|
b14 == 0
|
|
b13 == 1
|
|
return 1
|
|
|
|
def ANDXORANDXORANDtest() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = ANDXORANDXORAND(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1)
|
|
b31 == 0
|
|
b30 == 1
|
|
b29 == 0
|
|
b28 == 1
|
|
b27 == 0
|
|
b26 == 1
|
|
b25 == 0
|
|
b24 == 0
|
|
b23 == 0
|
|
b22 == 1
|
|
b21 == 0
|
|
b20 == 1
|
|
b19 == 0
|
|
b18 == 1
|
|
b17 == 1
|
|
b16 == 0
|
|
b15 == 0
|
|
b14 == 0
|
|
b13 == 1
|
|
b12 == 0
|
|
b11 == 0
|
|
b10 == 0
|
|
b9 == 1
|
|
b8 == 0
|
|
b7 == 0
|
|
b6 == 1
|
|
b5 == 1
|
|
b4 == 0
|
|
b3 == 1
|
|
b2 == 1
|
|
b1 == 0
|
|
b0 == 1
|
|
return 1
|
|
|
|
def ANDXORNOTANDtest() -> (field):
|
|
b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 = ANDXORNOTAND(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1)
|
|
b31 == 0
|
|
b30 == 1
|
|
b29 == 1
|
|
b28 == 1
|
|
b27 == 0
|
|
b26 == 1
|
|
b25 == 0
|
|
b24 == 1
|
|
b23 == 1
|
|
b22 == 1
|
|
b21 == 0
|
|
b20 == 1
|
|
b19 == 0
|
|
b18 == 1
|
|
b17 == 1
|
|
b16 == 1
|
|
b15 == 1
|
|
b14 == 1
|
|
b13 == 1
|
|
b12 == 0
|
|
b11 == 1
|
|
b10 == 1
|
|
b9 == 1
|
|
b8 == 1
|
|
b7 == 1
|
|
b6 == 1
|
|
b5 == 1
|
|
b4 == 1
|
|
b3 == 1
|
|
b2 == 1
|
|
b1 == 0
|
|
b0 == 1
|
|
return 1
|
|
|
|
def EXTENDtest() -> (field):
|
|
wfb31, wfb30, wfb29, wfb28, wfb27, wfb26, wfb25, wfb24, wfb23, wfb22, wfb21, wfb20, wfb19, wfb18, wfb17, wfb16, wfb15, wfb14, wfb13, wfb12, wfb11, wfb10, wfb9, wfb8, wfb7, wfb6, wfb5, wfb4, wfb3, wfb2, wfb1, wfb0 = EXTEND(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
|
wfb31 == 1
|
|
wfb30 == 0
|
|
wfb29 == 0
|
|
wfb28 == 0
|
|
wfb27 == 0
|
|
wfb26 == 0
|
|
wfb25 == 0
|
|
wfb24 == 0
|
|
wfb23 == 0
|
|
wfb22 == 0
|
|
wfb21 == 0
|
|
wfb20 == 0
|
|
wfb19 == 0
|
|
wfb18 == 0
|
|
wfb17 == 0
|
|
wfb16 == 0
|
|
wfb15 == 0
|
|
wfb14 == 0
|
|
wfb13 == 0
|
|
wfb12 == 0
|
|
wfb11 == 0
|
|
wfb10 == 0
|
|
wfb9 == 0
|
|
wfb8 == 0
|
|
wfb7 == 0
|
|
wfb6 == 0
|
|
wfb5 == 0
|
|
wfb4 == 0
|
|
wfb3 == 0
|
|
wfb2 == 0
|
|
wfb1 == 0
|
|
wfb0 == 0
|
|
return 1
|
|
|
|
|
|
def main() -> (field):
|
|
field a = ANDtest()
|
|
field b = ORtest()
|
|
field c = XORtest()
|
|
field d = NOTtest()
|
|
field e = FULLADDtest()
|
|
field h = AR6XORAR11XORAR25test()
|
|
field i = AR2XORAR13XORAR22test()
|
|
field j = AR7XORAR18XORAR3test()
|
|
field k = AR17XORAR19XORAR10testnull()
|
|
field l = ADDtest()
|
|
field m = COPYtest()
|
|
field n = ANDXORANDXORANDtest()
|
|
field o = ANDXORNOTANDtest()
|
|
field p = EXTENDtest()
|
|
return 1 |