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

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

?? optab.pl

?? It s a Linux disassemble, can set break point, disassemble ELF file.
?? PL
字號:
#!/usr/bin/perl## optab.pl# Generate source/include files from input file optab-x86.dat## Note: this script sets up the assembler/disassembler files# in similar manner to NASM. However, because of NASM's# restricted licensing, I was forced to "reinvent the wheel"# so to speak. As a result, the overall idea of how this# works is similar to NASM, but the actual implementation# is different.## $Id: optab.pl,v 1.1.1.1 2004/04/26 00:40:21 pa33 Exp $$InputFile = "optab-x86.dat";$SourceOutputFileD = "dtab-x86.c";$SourceOutputFileA = "atab-x86.c";$IncludeOutputFileN = "inames-x86.h";$IncludeOutputFile = "optab-x86.h";open (INFILE, $InputFile) || die "Unable to open $InputFile";# Current line number$linenum = 0;# Offset in our opcode array$offset = 0;while (<INFILE>){  $linenum++;  # skip comments  next if /^\s*#/;  # Remove newlines  chomp;  # Split line into substrings  split;  # skip blank lines  next if $#_ == -1;  # Make sure there are at least three fields in the line  if ($#_ < 2)  {    warn "Line $linenum contains less than three fields\n";    next;  }  # Format the line - convert intel syntax to our bitmask names  # etc  ($FormattedLine) = &format(@_);  if ($FormattedLine)  {    ## print "format = $FormattedLine\n";    ## print "0 = $_[0], 1 = $_[1], 2 = $_[2] 3 = $_[3]\n";    $CodeName = "Code_$_[0]";    push @$CodeName, $FormattedLine;    # Our opcodes are stored as two digits separated by    # commas (XX,YY,ZZ), so extract the first byte of the    # opcode, and store it in our Op array    $ii = substr($_[2], 0, 2);    $CodeName = "Op_$ii";    push @$CodeName, $offset;  }  $oparray{$_[0]}++;  $offset++;}close INFILE;@opcodes = sort keys(%oparray);# Generate assembly table fileprint STDERR "Generating ../source/$SourceOutputFileA\n";open (OUTFILE, ">../source/$SourceOutputFileA") ||  die "Unable to open ../source/$SourceOutputFileA";print OUTFILE "/*\n";print OUTFILE " * This file was generated by optab.pl - do not edit.\n";print OUTFILE " */\n\n";print OUTFILE "#include \"common-x86.h\"\n";print OUTFILE "#include \"operands-x86.h\"\n";print OUTFILE "#include \"optab-x86.h\"\n";print OUTFILE "#include \"regs-x86.h\"\n";print OUTFILE "\n";foreach $ii (@opcodes){  print OUTFILE "static struct x86OpCode Instruction_${ii}[] = {\n";  $CodeName = "Code_${ii}";  foreach $jj (@$CodeName)  {    print OUTFILE "  $jj\n";  }  print OUTFILE "  { -1, -1, { -1, -1, -1 }, 0, -1, -1, { -1, -1, -1 } }\n};\n\n";}print OUTFILE "struct x86OpCode *x86Instructions[] = {";$first = 1;foreach $ii (@opcodes){  if (!$first) { print OUTFILE ","; } else { $first = 0; }  print OUTFILE "\n  Instruction_${ii}";}print OUTFILE "\n};\n";close OUTFILE;# Generate disassembly table fileprint STDERR "Generating ../source/$SourceOutputFileD\n";open (OUTFILE, ">../source/$SourceOutputFileD") ||  die "Unable to open ../source/$SourceOutputFileD";print OUTFILE "/*\n";print OUTFILE " * This file was generated by optab.pl - do not edit.\n";print OUTFILE " */\n\n";print OUTFILE "#include \"common-x86.h\"\n";print OUTFILE "#include \"operands-x86.h\"\n";print OUTFILE "#include \"$IncludeOutputFile\"\n";print OUTFILE "#include \"regs-x86.h\"\n";print OUTFILE "\nstatic struct x86OpCode Instructions[] = {\n";foreach $ii (@opcodes){  $CodeName = "Code_$ii";  foreach $jj (@$CodeName)  {    print OUTFILE "  $jj\n";  }}print OUTFILE "  { 0, 0, { 0, 0, 0 }, 0, 0, 0, { 0, 0, 0 } }\n";print OUTFILE "};\n\n";for ($c = 0; $c < 256; $c++){  $h = sprintf "%02X", $c;  print OUTFILE "static struct x86OpCode *OpCode_${h}[] = {\n";  $CodeName = "Op_$h";  foreach $jj (@$CodeName)  {    print OUTFILE "  Instructions + $jj,\n";  }  print OUTFILE "  0\n};\n\n";}print OUTFILE "struct x86OpCode **x86OpCodes[] = {\n";for ($c = 0; $c < 256; $c++){  printf OUTFILE "  OpCode_%02X,\n", $c;}print OUTFILE "};\n";close OUTFILE;print STDERR "Generating ../include/$IncludeOutputFileN\n";open (OUTFILE, ">../include/$IncludeOutputFileN") ||  die "Unable to open ../include/$IncludeOutputFileN";print OUTFILE "/*\n";print OUTFILE " * This file was generated by optab.pl - do not edit.\n";print OUTFILE " */\n\n";print OUTFILE "#ifndef INCLUDED_inames_x86_h\n";print OUTFILE "#define INCLUDED_inames_x86_h\n\n";print OUTFILE "static const char *x86InstructionNames[] = {";$first = 1;foreach $ii (@opcodes){  if (!$first) { print OUTFILE ","; } else { $first = 0; }  $lower = $ii;  $lower =~ tr/A-Z/a-z/;  #print OUTFILE "  \"$lower\",\n";  print OUTFILE "\n  \"$lower\"";}print OUTFILE "\n};\n";print OUTFILE "\n#endif /* INCLUDED_inames_x86_h */\n";close OUTFILE;print STDERR "Generating ../include/$IncludeOutputFile\n";open (OUTFILE, ">../include/$IncludeOutputFile") ||  die "Unable to open ../include/$IncludeOutputFile";print OUTFILE "/*\n";print OUTFILE " * This file was generated by optab.pl - do not edit.\n";print OUTFILE " */\n\n";print OUTFILE "#ifndef INCLUDED_optab_x86_h\n";print OUTFILE "#define INCLUDED_optab_x86_h\n\n";print OUTFILE "enum\n{\n";print OUTFILE join(",\n", map { "  I_$_" } @opcodes), "\n";print OUTFILE "};\n";print OUTFILE "\n";print OUTFILE "extern struct x86OpCode **x86OpCodes[];\n";print OUTFILE "extern struct x86OpCode *x86Instructions[];\n";#print OUTFILE "extern const char *x86InstructionNames[];\n";print OUTFILE "\n#endif /* INCLUDED_optab_x86_h */\n";close OUTFILE;# This function takes an array of strings as input, formats# them, and returns an array entry for our Instructions[]# array.## Inputs: arg1 - instruction name#         arg2 - list of operands separated by commas#         arg3 - list of opcode bytes separated by commas#         arg4 - (optional) additional info such as modrm valuessub format{  local ($inst, $operands, $codes, $modrm) = @_;  local $opcnt = 0;  local $oparg1 = "-1";  local $oparg2 = "-1";  local $oparg3 = "-1";  # format the operands  $operands =~ s/fpureg/reg_fpu/g;  $operands =~ s/imm(\d+)/imm|bits$1/g;  $operands =~ s/imm/immediate/g;  $operands =~ s/mem(\d+)/mem|bits$1/g;  $operands =~ s/mem/memory/g;  $operands =~ s/mmxreg/reg_mmx/g;  $operands =~ s/moffs/memoffs/g;  $operands =~ s/rel(\d+)/relative|bits$1/g;  $operands =~ s/rm(\d+)/regmem|bits$1/g;  $operands =~ s/segreg/reg_sr/g;  $operands =~ s/xmmreg/reg_xmm/g;  $operands =~ s/conreg/reg_control/g;  $operands =~ s/debreg/reg_debug/g;  $operands =~ s/ptr(\d+):(\d+)/seg$1|off$2/g;  if ($operands !~ /_rm/) { $operands =~ s/rm/regmem/g; }  # Add a BITS32 to OFF32 opcodes so they will get priority over  # their 16 bit versions, if any  $operands =~ s/off32/off32|bits32/g;  # Handle rDD(xxx) situations  ($op1, $op2, $op3) = split(/,/, $operands, 3);  if ($op1 =~ s/r(\d+)\((\w+)\)/register|bits$1/g) { $oparg1 = "r_$2"; }  if ($op1 =~ s/r\((\w+)\)/register/g) { $oparg1 = "r_$1"; }  if ($op1 =~ s/const(\d+)/constant/g) { $oparg1 = $1; }  if ($op1 =~ s/reg(\d+)_rm/reg$1/g) { $oparg1 = "MODFIELD_RM"; }  if ($op2 =~ s/r(\d+)\((\w+)\)/register|bits$1/g) { $oparg2 = "r_$2"; }  if ($op2 =~ s/r\((\w+)\)/register/g) { $oparg2 = "r_$1"; }  if ($op2 =~ s/const(\d+)/constant/g) { $oparg2 = $1; }  if ($op2 =~ s/reg(\d+)_rm/reg$1/g) { $oparg2 = "MODFIELD_RM"; }  if ($op3 =~ s/r(\d+)\((\w+)\)/register|bits$1/g) { $oparg3 = "r_$2"; }  if ($op3 =~ s/r\((\w+)\)/register/g) { $oparg3 = "r_$1"; }  if ($op3 =~ s/const(\d+)/constant/g) { $oparg3 = $1; }  if ($op3 =~ s/reg(\d+)_rm/reg$1/g) { $oparg3 = "MODFIELD_RM"; }  if (length($op3) != 0)  {    $opcnt = 3;    $finalop = "$op1, $op2, $op3";  }  elsif (length($op2) != 0)  {    $opcnt = 2;    $finalop = "$op1, $op2, 0";  }  elsif (length($op1) != 0)  {    $opcnt = 1;    $finalop = "$op1, 0, 0";  }  else  {    $opcnt = 0;    $finalop = "0, 0, 0";  }  $finalop = '0, 0, 0', $opcnt = 0 if $operands eq 'void';  $finalop = 'BITS32, 0, 0', $opcnt = 0 if $operands eq 'void32';  $finalop =~ tr/a-z/A-Z/;  # We must convert opargs to uppercase in case they hold  # a register index (ie: r_al -> R_AL)  $oparg1 =~ tr/a-z/A-Z/;  $oparg2 =~ tr/a-z/A-Z/;  $oparg3 =~ tr/a-z/A-Z/;  # codes will come in looking something like: F1,F2,F3  # Replace the commas with a \x and stick a \x on the front  # to get the first opcode (\xF1\xF2\xF3)  $oplen = $codes =~ tr/\,/\,/;  $oplen++;  $codes =~ s/\,/\\x/g;  $codes = "\\x" . $codes;  # If there is no digit associated with the opcode, make the field  # -1. If the digit is /r, make the field "REGRM", otherwise it's  # numerical value. A value of "c" indicates a register code  # that is added to the opcode.  $modrm = -1 if $modrm eq '';  $modrm = 'REGRM' if $modrm eq 'r';  $modrm = 'REGCODE' if $modrm eq 'c';  $modrm = 'FPUCODE' if $modrm eq 'f';  ("{ I_$inst, $opcnt, { $finalop }, \"$codes\", $oplen, $modrm, { $oparg1, $oparg2, $oparg3 } },");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av影院| 国产成人高清视频| 亚洲国产视频一区| 亚洲亚洲人成综合网络| 亚洲一区二区三区四区在线 | 99久久夜色精品国产网站| 国产寡妇亲子伦一区二区| 国产99久久久国产精品潘金| 国产福利一区二区三区在线视频| 国产白丝网站精品污在线入口| 处破女av一区二区| 91高清在线观看| 欧美一二区视频| 欧美国产激情一区二区三区蜜月| 亚洲欧洲成人av每日更新| 一区二区久久久| 热久久久久久久| 国产在线精品免费| 色八戒一区二区三区| 欧美精品色一区二区三区| 精品久久久影院| 亚洲欧美日韩中文播放| 视频一区中文字幕国产| 国产成人免费视频一区| 欧美图区在线视频| 久久久精品中文字幕麻豆发布| 综合婷婷亚洲小说| 美国一区二区三区在线播放| 成人毛片在线观看| 欧美丰满美乳xxx高潮www| 国产视频一区在线观看| 亚洲综合在线视频| 国产九色sp调教91| 欧美影视一区在线| 久久久久国产精品麻豆ai换脸| 夜夜爽夜夜爽精品视频| 国产xxx精品视频大全| 欧美日韩国产高清一区| 国产精品久久久久久久浪潮网站| 日韩精品高清不卡| 色综合久久久网| 国产拍欧美日韩视频二区| 水蜜桃久久夜色精品一区的特点| 91在线视频免费观看| 久久久久久免费网| 美国三级日本三级久久99 | 免费成人性网站| 日本久久精品电影| 国产精品国产三级国产| 国产精品亚洲午夜一区二区三区| 欧美三区免费完整视频在线观看| 欧美国产精品一区二区| 黄色资源网久久资源365| 欧美剧在线免费观看网站 | 国产精品 日产精品 欧美精品| 欧美日韩一区二区电影| 亚洲男人的天堂一区二区| 成人在线视频一区二区| 欧美mv日韩mv国产网站app| 亚洲国产成人va在线观看天堂| 成人黄色av电影| 亚洲国产精品二十页| 国产美女视频一区| 国产三级一区二区| 风间由美性色一区二区三区| 久久夜色精品一区| 国产成人精品在线看| 国产清纯白嫩初高生在线观看91 | 精品国产三级电影在线观看| 美女网站色91| 精品国产亚洲在线| 国产一区二区不卡在线| 久久精品日韩一区二区三区| 国产精品一区二区久久精品爱涩 | 免费成人av资源网| 日韩一区二区三区视频在线观看| 奇米影视一区二区三区小说| 5566中文字幕一区二区电影| 日欧美一区二区| 欧美不卡一区二区| 国产盗摄精品一区二区三区在线| 国产午夜亚洲精品午夜鲁丝片| 国产精品一区在线观看你懂的| 国产日韩欧美在线一区| 丁香婷婷综合色啪| 亚洲男同性视频| 69精品人人人人| 国产精品综合av一区二区国产馆| 国产日韩欧美一区二区三区乱码| 成人福利视频网站| 亚洲综合在线免费观看| 日韩欧美视频一区| 成人综合婷婷国产精品久久蜜臀| 亚洲色图欧美在线| 日韩亚洲欧美在线| 成人av片在线观看| 亚洲成av人**亚洲成av**| 精品毛片乱码1区2区3区| 大陆成人av片| 三级亚洲高清视频| 欧美激情在线一区二区| 欧美午夜在线观看| 黄一区二区三区| 一区二区三区日韩精品视频| 精品欧美一区二区在线观看| 99国产精品国产精品毛片| 免费在线观看精品| 亚洲精品一二三四区| 日韩欧美国产1| 在线亚洲免费视频| 国产精品一区在线| 亚洲第一成人在线| 中文字幕在线播放不卡一区| 91精品国产色综合久久不卡电影| 成人性色生活片免费看爆迷你毛片| 一区二区三区加勒比av| 欧美高清一级片在线观看| 3d成人h动漫网站入口| 91麻豆国产精品久久| 国产精品伊人色| 美脚の诱脚舐め脚责91| 伊人色综合久久天天人手人婷| 2021久久国产精品不只是精品| 欧美午夜一区二区三区| zzijzzij亚洲日本少妇熟睡| 精品午夜一区二区三区在线观看| 亚洲福利视频导航| 一区二区三区四区在线播放| 欧美国产乱子伦| 久久亚洲综合av| 日韩视频免费观看高清完整版在线观看| www.性欧美| 国产精品影音先锋| 国产一区二区三区不卡在线观看 | 日韩欧美一级二级三级久久久| 欧美亚洲自拍偷拍| 色狠狠色噜噜噜综合网| 成人久久18免费网站麻豆 | 欧美日韩精品综合在线| 91丨九色porny丨蝌蚪| av综合在线播放| 成人精品高清在线| 国产成人在线色| 国产91在线看| 不卡一区在线观看| av电影天堂一区二区在线观看| 丁香激情综合国产| 国产aⅴ精品一区二区三区色成熟| 美女网站视频久久| 国产真实精品久久二三区| 国产资源精品在线观看| 国产乱一区二区| 国产xxx精品视频大全| 成人av在线一区二区三区| 成人综合激情网| 91麻豆国产在线观看| 欧美在线观看视频一区二区三区| 欧美三级日韩三级国产三级| 欧美绝品在线观看成人午夜影视| 欧美一区二区视频网站| 欧美精品一区视频| 国产精品久久久久永久免费观看| 国产精品嫩草久久久久| 亚洲精品伦理在线| 五月天欧美精品| 久久99久久久久| 成人激情综合网站| 欧美亚洲国产一区二区三区| 88在线观看91蜜桃国自产| 日韩欧美第一区| 国产精品视频第一区| 亚洲视频 欧洲视频| 天天色综合天天| 国产不卡免费视频| 欧美性色综合网| 久久久99精品免费观看| 成人免费在线视频| 日韩一区欧美二区| 国产风韵犹存在线视精品| 91福利国产精品| 日韩精品一区二区三区中文精品| 国产精品全国免费观看高清| 夜夜亚洲天天久久| 国产精品夜夜嗨| 欧美色中文字幕| 中文幕一区二区三区久久蜜桃| 亚洲综合在线五月| 国产成人a级片| 欧美一区二区三区在线视频| 国产精品免费丝袜| 精品影视av免费| 色婷婷av久久久久久久| 国产亚洲精品资源在线26u| 亚洲最大成人综合| 成人精品鲁一区一区二区| 欧美一区二区三区思思人| 亚洲欧美综合色| 国产精品一区二区在线观看不卡| 欧美日韩综合不卡| 亚洲欧洲av在线|