mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Fix implementation of BYTE
This commit is contained in:
		
							parent
							
								
									a356059461
								
							
						
					
					
						commit
						f6789de9f8
					
				
							
								
								
									
										18
									
								
								test/formal/byte_big.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								test/formal/byte_big.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| from rule import Rule | ||||
| from opcodes import * | ||||
| 
 | ||||
| """ | ||||
| byte(A, X) -> 0 | ||||
| given A >= WordSize / 8 | ||||
| """ | ||||
| 
 | ||||
| rule = Rule() | ||||
| 
 | ||||
| n_bits = 256 | ||||
| 
 | ||||
| # Input vars | ||||
| X = BitVec('X', n_bits) | ||||
| A = BitVec('A', n_bits) | ||||
| 
 | ||||
| rule.require(A >= n_bits / 8) | ||||
| rule.check(BYTE(A, X), 0) | ||||
| @ -59,4 +59,8 @@ def SAR(x, y): | ||||
| 
 | ||||
| def BYTE(i, x): | ||||
| 	bit = (i + 1) * 8 | ||||
| 	return If(UGT(bit, x.size()), BitVecVal(0, x.size()), (LShR(x, (x.size() - bit))) & 0xff) | ||||
| 	return If( | ||||
| 		UGT(i, x.size() / 8 - 1), | ||||
| 		BitVecVal(0, x.size()), | ||||
| 		(LShR(x, (x.size() - bit))) & 0xff | ||||
| 	) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user