bits.hhf

来自「High Level assembly language(HLA)软件」· HHF 代码 · 共 88 行

HHF
88
字号
#if( ! @defined( bits_hhf ))?bits_hhf := true;namespace bits;readonly	SpreadBitsOdd8	:word[256];	@external( "BITS_SPREADBITSODD8" );	SpreadBitsEven8	:word[256];	@external( "BITS_SPREADBITSEVEN8" );	reversedBits	:byte[256]; @external( "BITS_REVERSEDBITS" );		procedure cnt( BitsToCnt:dword in eax ); 		@returns( "eax" ); 		@external( "BITS_CNT" );			procedure distribute( source:dword; mask:dword; dest:dword ); 		@returns( "eax" );		@external( "BITS_DISTRIBUTE" );			procedure coalesce( source:dword; mask:dword ); @returns( "eax" ); 		@external( "BITS_COALESCE" );		#macro extract( d );			#if( @string:d = "eax" )					#error( "Cannot pass EAX as a parameter to bits.extract" )					#endif			bsf( d, eax );		if( @nz ) then					btr( eax, d );					else					mov( -1, eax );			cmp( eax, eax ); // Must set zflag.					endif;			#endmacro	procedure reverse32( BitsToReverse:dword in eax ); 		@returns( "eax" ); 		@external( "BITS_REVERSE32" );	procedure reverse16( BitsToReverse:word in ax ); 		@returns( "ax" ); 		@external( "BITS_REVERSE16" );	procedure reverse8( BitsToReverse:byte in al ); 		@returns( "al" ); 		@external( "BITS_REVERSE8" );  	procedure merge8( even:byte; odd:byte );   		@returns( "ax" );		@external( "BITS_MERGE8" );  	procedure merge16( even:word; odd:word );   		@returns( "eax" );		@external( "BITS_MERGE16" );  	procedure merge32( even:dword; odd:dword );   		@returns( "edx:eax" );		@external( "BITS_MERGE32" );	procedure nibbles8( theByte:byte in al ); 		@returns( "ax" );		@external( "BITS_NIBBLES8" );	procedure nibbles16( theWord:word in ax ); 		@returns( "eax" );		@external( "BITS_NIBBLES16" );	procedure nibbles32( theDWord:dword in eax ); 		@returns( "edx:eax" );		@external( "BITS_NIBBLES32" );end bits;#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?