⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcode.t

📁 source of perl for linux application,
💻 T
字号:
#!./perl -w$|=1;BEGIN {    chdir 't' if -d 't';    @INC = '../lib';    require Config; import Config;    if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {        print "1..0\n";        exit 0;    }}use Opcode qw(	opcodes opdesc opmask verify_opset	opset opset_to_ops opset_to_hex invert_opset	opmask_add full_opset empty_opset define_optag);use strict;my $t = 1;my $last_test; # initalised at endprint "1..$last_test\n";my($s1, $s2, $s3);my(@o1, @o2, @o3);# --- opset_to_ops and opsetmy @empty_l = opset_to_ops(empty_opset);print @empty_l == 0 ?   "ok $t\n" : "not ok $t\n"; $t++;my @full_l1  = opset_to_ops(full_opset);print @full_l1 == opcodes() ? "ok $t\n" : "not ok $t\n"; $t++;my @full_l2 = @full_l1;	# = opcodes();	# XXX to be fixedprint "@full_l1" eq "@full_l2" ? "ok $t\n" : "not ok $t\n"; $t++;@empty_l = opset_to_ops(opset(':none'));print @empty_l == 0 ?   "ok $t\n" : "not ok $t\n"; $t++;my @full_l3 = opset_to_ops(opset(':all'));print  @full_l1  ==  @full_l3  ? "ok $t\n" : "not ok $t\n"; $t++;print "@full_l1" eq "@full_l3" ? "ok $t\n" : "not ok $t\n"; $t++;die $t unless $t == 7;$s1 = opset(      'padsv');$s2 = opset($s1,  'padav');$s3 = opset($s2, '!padav');print $s1 eq $s2 ? "not ok $t\n" : "ok $t\n"; ++$t;print $s1 eq $s3 ? "ok $t\n" : "not ok $t\n"; ++$t;# --- define_optagprint eval { opset(':_tst_') } ? "not ok $t\n" : "ok $t\n"; ++$t;define_optag(":_tst_", opset(qw(padsv padav padhv)));print eval { opset(':_tst_') } ? "ok $t\n" : "not ok $t\n"; ++$t;# --- opdesc and opcodesdie $t unless $t == 11;print opdesc("gv") eq "glob value" ? "ok $t\n" : "not ok $t\n"; $t++;my @desc = opdesc(':_tst_','stub');print "@desc" eq "private variable private array private hash stub"				    ? "ok $t\n" : "not ok $t\n#@desc\n"; $t++;print opcodes() ? "ok $t\n" : "not ok $t\n"; $t++;print "ok $t\n"; ++$t;# --- invert_opset$s1 = opset(qw(fileno padsv padav));@o2 = opset_to_ops(invert_opset($s1));print @o2 == opcodes-3 ? "ok $t\n" : "not ok $t\n"; $t++;# --- opmaskdie $t unless $t == 16;print opmask() eq empty_opset() ? "ok $t\n" : "not ok $t\n"; $t++;	# workprint length opmask() == int((opcodes()+7)/8) ? "ok $t\n" : "not ok $t\n"; $t++;# --- verify_opsetprint verify_opset($s1) && !verify_opset(42) ? "ok $t\n":"not ok $t\n"; $t++;# --- opmask_addopmask_add(opset(qw(fileno)));	# add to global op_maskprint eval 'fileno STDOUT' ? "not ok $t\n" : "ok $t\n";	$t++; # failprint $@ =~ /'fileno' trapped/ ? "ok $t\n" : "not ok $t\n# $@\n"; $t++;# --- check use of bit vector ops on opsets$s1 = opset('padsv');$s2 = opset('padav');$s3 = opset('padsv', 'padav', 'padhv');# Non-negatedprint (($s1 | $s2) eq opset($s1,$s2) ? "ok $t\n":"not ok $t\n"); $t++;print (($s2 & $s3) eq opset($s2)     ? "ok $t\n":"not ok $t\n"); $t++;print (($s2 ^ $s3) eq opset('padsv','padhv') ? "ok $t\n":"not ok $t\n"); $t++;# Negated, e.g., with possible extra bits in last byte beyond last op bit.# The extra bits mean we can't just say ~mask eq invert_opset(mask).@o1 = opset_to_ops(           ~ $s3);@o2 = opset_to_ops(invert_opset $s3);print "@o1" eq "@o2" ? "ok $t\n":"not ok $t\n"; $t++;# --- finally, check some opname assertionsforeach(@full_l1) { die "bad opname: $_" if /\W/ or /^\d/ }print "ok $last_test\n";BEGIN { $last_test = 25 }

⌨️ 快捷键说明

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