亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? insns.pl

?? 32位匯編編譯器nasm源代碼
?? PL
字號:
#!/usr/bin/perl
# 
# insns.pl   produce insnsa.c, insnsd.c, insnsi.h, insnsn.c from insns.dat
#
# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
# Julian Hall. All rights reserved. The software is
# redistributable under the licence given in the file "Licence"
# distributed in the NASM archive.

print STDERR "Reading insns.dat...\n";

@args   = ();
undef $output;
foreach $arg ( @ARGV ) {
    if ( $arg =~ /^\-/ ) {
	if  ( $arg =~ /^\-([adin])$/ ) {
	    $output = $1;
	} else {
	    die "$0: Unknown option: ${arg}\n";
	}
    } else {
	push (@args, $arg);
    }
}

$fname = "insns.dat" unless $fname = $args[0];
open (F, $fname) || die "unable to open $fname";

$line = 0;
$insns = 0;
while (<F>) {
  $line++;
  next if /^\s*;/;   # comments
  chomp;
  split;
  next if $#_ == -1; # blank lines
  (warn "line $line does not contain four fields\n"), next if $#_ != 3;
  ($formatted, $nd) = &format(@_);
  if ($formatted) {
    $insns++;
    $aname = "aa_$_[0]";
    push @$aname, $formatted;
  }
  if ( $_[0] =~ /cc$/ ) {
      # Conditional instruction
      $k_opcodes_cc{$_[0]}++;
  } else {
      # Unconditional instruction
      $k_opcodes{$_[0]}++;
  }
  if ($formatted && !$nd) {
    push @big, $formatted;
    foreach $i (&startbyte($_[2])) {
      $aname = sprintf "dd_%02X",$i;
      push @$aname, $#big;
    }
  }
}

close F;

@opcodes    = sort keys(%k_opcodes);
@opcodes_cc = sort keys(%k_opcodes_cc);

if ( !defined($output) || $output eq 'a' ) {
    print STDERR "Writing insnsa.c...\n";
    
    open A, ">insnsa.c";
    
    print A "/* This file auto-generated from insns.dat by insns.pl" .
        " - don't edit it */\n\n";
    print A "#include \"nasm.h\"\n";
    print A "#include \"insns.h\"\n";
    print A "\n";
    
    foreach $i (@opcodes, @opcodes_cc) {
	print A "static struct itemplate instrux_${i}[] = {\n";
	$aname = "aa_$i";
	foreach $j (@$aname) {
	    print A "    $j\n";
	}
	print A "    ITEMPLATE_END\n};\n\n";
    }
    print A "struct itemplate *nasm_instructions[] = {\n";
    foreach $i (@opcodes, @opcodes_cc) {
	print A "    instrux_${i},\n";
    }
    print A "};\n";
    
    close A;
}

if ( !defined($output) || $output eq 'd' ) {
    print STDERR "Writing insnsd.c...\n";
    
    open D, ">insnsd.c";
    
    print D "/* This file auto-generated from insns.dat by insns.pl" .
        " - don't edit it */\n\n";
    print D "#include \"nasm.h\"\n";
    print D "#include \"insns.h\"\n";
    print D "\n";
    
    print D "static struct itemplate instrux[] = {\n";
    foreach $j (@big) {
	print D "    $j\n";
    }
	print D "    ITEMPLATE_END\n};\n\n";
    
    for ($c=0; $c<256; $c++) {
	$h = sprintf "%02X", $c;
	print D "static struct itemplate *itable_${h}[] = {\n";
	$aname = "dd_$h";
	foreach $j (@$aname) {
	    print D "    instrux + $j,\n";
	}
	print D "    NULL\n};\n\n";
    }
    
    print D "struct itemplate **itable[] = {\n";
    for ($c=0; $c<256; $c++) {
	printf D "    itable_%02X,\n", $c;
    }
    print D "};\n";
    
    close D;
}

if ( !defined($output) || $output eq 'i' ) {
    print STDERR "Writing insnsi.h...\n";
    
    open I, ">insnsi.h";
    
    print I "/* This file is auto-generated from insns.dat by insns.pl" .
        " - don't edit it */\n\n";
    print I "/* This file in included by nasm.h */\n\n";
    
    print I "/* Instruction names */\n";
    print I "enum {";
    $first  = 1;
    $maxlen = 0;
    foreach $i (@opcodes, @opcodes_cc) {
	print I "," if ( !$first );
	$first = 0;
	print I "\n\tI_${i}";
	$len = length($i);
	$len++ if ( $i =~ /cc$/ );	# Condition codes can be 3 characters long
	$maxlen = $len if ( $len > $maxlen );
    }
    print I "\n};\n\n";
    print I "#define MAX_INSLEN ", $maxlen, "\n";
    
    close I;
}

if ( !defined($output) || $output eq 'n' ) {
    print STDERR "Writing insnsn.c...\n";
    
    open N, ">insnsn.c";
    
    print N "/* This file is auto-generated from insns.dat by insns.pl" .
        " - don't edit it */\n\n";
    print N "/* This file in included by names.c */\n\n";
    
    print N "static const char *insn_names[] = {";
    $first = 1;
    foreach $i (@opcodes) {
	print N "," if ( !$first );
	$first = 0;
	$ilower = $i;
	$ilower =~ tr/A-Z/a-z/;	# Change to lower case (Perl 4 compatible)
	print N "\n\t\"${ilower}\"";
    }
    print N "\n};\n\n";
    print N "/* Conditional instructions */\n";
    print N "static const char *icn[] = {";
    $first = 1;
    foreach $i (@opcodes_cc) {
	print N "," if ( !$first );
	$first = 0;
	$ilower = $i;
	$ilower =~ s/cc$//;		# Skip cc suffix
	$ilower =~ tr/A-Z/a-z/;	# Change to lower case (Perl 4 compatible)
	print N "\n\t\"${ilower}\"";
    }
    
    print N "\n};\n\n";
    print N "/* and the corresponding opcodes */\n";
    print N "static int ico[] = {";
    $first = 1;
    foreach $i (@opcodes_cc) {
	print N "," if ( !$first );
	$first = 0;
	print N "\n\tI_$i";
    }
    
    print N "\n};\n";
    
    close N;
}

printf STDERR "Done: %d instructions\n", $insns;

sub format {
  local ($opcode, $operands, $codes, $flags) = @_;
  local $num, $nd = 0;

  return (undef, undef) if $operands eq "ignore";

  # format the operands
  $operands =~ s/:/|colon,/g;
  $operands =~ s/mem(\d+)/mem|bits$1/g;
  $operands =~ s/mem/memory/g;
  $operands =~ s/memory_offs/mem_offs/g;
  $operands =~ s/imm(\d+)/imm|bits$1/g;
  $operands =~ s/imm/immediate/g;
  $operands =~ s/rm(\d+)/regmem|bits$1/g;
  $num = 3;
  $operands = '0,0,0', $num = 0 if $operands eq 'void';
  $operands .= ',0', $num-- while $operands !~ /,.*,/;
  $operands =~ tr/a-z/A-Z/;

  # format the flags
  $flags =~ s/,/|IF_/g;
  $flags =~ s/(\|IF_ND|IF_ND\|)//, $nd = 1 if $flags =~ /IF_ND/;
  $flags = "IF_" . $flags;

  ("{I_$opcode, $num, {$operands}, \"$codes\", $flags},", $nd);
}

# Here we determine the range of possible starting bytes for a given
# instruction. We need only consider the codes:
# \1 \2 \3     mean literal bytes, of course
# \4 \5 \6 \7  mean PUSH/POP of segment registers: special case
# \10 \11 \12  mean byte plus register value
# \17          means byte zero
# \330         means byte plus condition code
# \0 or \340   mean give up and return empty set
sub startbyte {
  local ($codes) = @_;
  local $word, @range;

  while (1) {
    die "couldn't get code in '$codes'" if $codes !~ /^(\\[^\\]+)(\\.*)?$/;
    $word = $1, $codes = $2;
    return (hex $1) if $word =~ /^\\[123]$/ && $codes =~ /^\\x(..)/;
    return (0x07, 0x17, 0x1F) if $word eq "\\4";
    return (0xA1, 0xA9) if $word eq "\\5";
    return (0x06, 0x0E, 0x16, 0x1E) if $word eq "\\6";
    return (0xA0, 0xA8) if $word eq "\\7";
    $start=hex $1, $r=8, last if $word =~ /^\\1[012]$/ && $codes =~/^\\x(..)/;
    return (0) if $word eq "\\17";
    $start=hex $1, $r=16, last if $word =~ /^\\330$/ && $codes =~ /^\\x(..)/;
    return () if $word eq "\\0" || $word eq "\\340";
  }
  @range = ();
  push @range, $start++ while ($r-- > 0);
  @range;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
69av一区二区三区| 亚洲一区二区成人在线观看| 国产精品久久99| 一二三四区精品视频| 精品一区二区三区在线观看 | 中文一区二区在线观看| 亚洲图片欧美综合| 国产超碰在线一区| 欧美一级免费观看| 亚洲永久免费av| 色婷婷综合久久久久中文| 久久久久久免费毛片精品| 视频在线观看91| 91在线视频官网| 国产午夜精品一区二区三区四区| 亚洲一区在线观看网站| 91首页免费视频| 国产精品私人影院| 韩国女主播成人在线观看| 欧美一级免费大片| 日韩电影免费一区| 欧美一区在线视频| 日本美女一区二区三区视频| 欧洲亚洲国产日韩| 玉米视频成人免费看| 日本高清视频一区二区| ...中文天堂在线一区| 丁香啪啪综合成人亚洲小说| 久久久99免费| 国产91精品精华液一区二区三区| 久久网站最新地址| 成人精品一区二区三区四区| 国产精品久久久99| av高清不卡在线| 一色桃子久久精品亚洲| 99久久er热在这里只有精品66| 国产精品污污网站在线观看| 成人午夜免费电影| 亚洲视频你懂的| 91日韩一区二区三区| 亚洲精品伦理在线| 欧美日韩精品一区二区| 首页国产欧美日韩丝袜| 精品美女在线观看| 国产成人精品一区二区三区四区| 国产精品伦一区二区三级视频| 99久久国产综合精品色伊 | 欧美电影免费观看高清完整版在 | 精品国产免费人成电影在线观看四季| 日本欧美大码aⅴ在线播放| 91精品国产综合久久国产大片| 秋霞av亚洲一区二区三| 国产日韩欧美激情| 91蜜桃在线观看| 日本不卡一区二区| 国产婷婷色一区二区三区| 91美女片黄在线观看| 日韩电影在线免费| 久久久久国产精品人| 97久久精品人人做人人爽| 图片区小说区区亚洲影院| 久久久久九九视频| 欧美日韩综合不卡| 国产一区二区视频在线| 亚洲欧美一区二区三区极速播放 | 国产露脸91国语对白| 亚洲免费观看高清完整版在线| 欧美人狂配大交3d怪物一区| 国产麻豆视频一区二区| 亚洲综合一区二区精品导航| 欧美大肚乱孕交hd孕妇| 91亚洲精品久久久蜜桃网站| 麻豆国产一区二区| 日韩码欧中文字| 日韩欧美资源站| 99精品国产一区二区三区不卡| 日韩av午夜在线观看| 国产欧美日韩亚州综合| 欧美日韩国产大片| 91在线播放网址| 国产麻豆成人精品| 天堂精品中文字幕在线| 亚洲乱码中文字幕| 国产欧美日本一区视频| 91精品国产色综合久久不卡蜜臀| av中文字幕一区| 激情综合网天天干| 亚洲成人精品影院| 亚洲精品成人少妇| 国产精品妹子av| 久久久久99精品一区| 91精品国产日韩91久久久久久| 色哟哟精品一区| 不卡的av在线| 国产盗摄视频一区二区三区| 日韩极品在线观看| 亚洲国产精品久久人人爱| 中文字幕亚洲精品在线观看 | 5566中文字幕一区二区电影| 99国内精品久久| 成人午夜激情视频| 国产精品一区二区久久精品爱涩| 丝袜美腿亚洲综合| 午夜久久久久久久久| 一区二区三区在线免费播放| 亚洲女同一区二区| 亚洲六月丁香色婷婷综合久久| 中文字幕巨乱亚洲| 国产精品久久久久久久久晋中 | 精品国产乱码久久久久久牛牛| 欧美三级在线视频| 欧美日韩三级一区| 欧美精品日韩综合在线| 欧美久久久久免费| 555www色欧美视频| 欧美va亚洲va国产综合| 精品日韩欧美在线| 久久久久久夜精品精品免费| 久久综合视频网| 国产三级精品视频| 成人欧美一区二区三区视频网页 | 日韩成人精品在线观看| 丝袜美腿亚洲综合| 久久精品国产**网站演员| 另类的小说在线视频另类成人小视频在线 | 精品日韩一区二区三区免费视频| 精品国产1区二区| 久久久久成人黄色影片| 国产精品久久99| 亚洲制服丝袜在线| 水野朝阳av一区二区三区| 久久国产福利国产秒拍| 国产在线国偷精品免费看| 国产一区二区按摩在线观看| 成人动漫一区二区三区| 色综合激情五月| 欧美乱妇15p| 欧美xxxxxxxxx| 国产精品黄色在线观看| 亚洲一区二区三区国产| 久久97超碰国产精品超碰| 国产69精品久久99不卡| 91国产免费观看| 精品国产一区二区三区久久影院 | 国产日韩欧美a| 一区二区三区**美女毛片| 奇米888四色在线精品| 成人激情校园春色| 3d动漫精品啪啪1区2区免费| 久久精品视频免费| 亚洲一区二区在线观看视频| 国内久久精品视频| 91社区在线播放| 日韩三级高清在线| 综合亚洲深深色噜噜狠狠网站| 日韩在线a电影| 99久久精品国产一区| 日韩女优制服丝袜电影| 亚洲综合视频在线| 国产丶欧美丶日本不卡视频| 欧美巨大另类极品videosbest | 三级久久三级久久久| 懂色av一区二区三区免费看| 欧美剧情片在线观看| 综合久久国产九一剧情麻豆| 日本成人中文字幕在线视频| 色乱码一区二区三区88| 久久久久久电影| 蜜臀a∨国产成人精品| 91国产免费看| 亚洲欧洲av在线| 国产一区二区三区蝌蚪| 欧美一区二区三区小说| 亚洲一区二区五区| 成人app在线观看| 欧美激情一区二区三区蜜桃视频 | 日韩精品午夜视频| 欧洲一区二区三区在线| 国产精品第一页第二页第三页| 久久精品国产亚洲一区二区三区 | 国产亚洲一区二区在线观看| 亚洲成人av一区二区三区| youjizz久久| 国产人妖乱国产精品人妖| 久久精品国产精品青草| 日韩午夜精品电影| 亚洲电影欧美电影有声小说| 一本色道久久综合亚洲aⅴ蜜桃| 久久久久国产精品免费免费搜索| 免费在线观看日韩欧美| 欧美日本免费一区二区三区| 亚洲成人久久影院| 欧美日韩精品综合在线| 亚洲va中文字幕| 欧美日韩一区二区三区四区五区 | 亚洲免费观看高清完整| 在线视频一区二区免费| 一区二区三区日本| 欧美色手机在线观看| 亚洲国产精品久久久久秋霞影院 |