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

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

?? nasmstab

?? 一個x86匯編器,能在一些算法優化上能其很大作用
??
字號:
#!/usr/bin/perl
 
sub StabLine  ($ $ $ $ $ $) {
        local ($comment,$n_strx,$type,$other,$desc,$value) = @_;
        print $comment;
        print "","dd",$n_strx;
        print "","db",$type;
        print "","db",$other;
        print "","dw",$desc;
        print "","dd","0" . $value . "h";
}

sub RStabLine  ($ $ $ $ $) {
        local ($comment,$offset,$info,$type,$symbol) = @_;
        print $comment;
        print "","dd",$offset;
        print "","db",$type;
        print "","db",$symbol;
        print "","dw",$info;
}

#this sub exists because i've no idea how to print non-ascii numbers in perl

sub OutBin ( $ $ ) {
        local ($offset, $shnum) = @_;
        seek(FINAL,$offset,0);
        if ( $shnum == 2 ) { printf FINAL "\x02" } ;
        if ( $shnum == 3 ) { printf FINAL "\x03" } ;
        if ( $shnum == 4 ) { printf FINAL "\x04" } ;
        if ( $shnum == 5 ) { printf FINAL "\x05" } ;
        if ( $shnum == 6 ) { printf FINAL "\x06" } ;
        if ( $shnum == 7 ) { printf FINAL "\x07" } ;
        if ( $shnum == 8 ) { printf FINAL "\x08" } ;
        if ( $shnum == 9 ) { printf FINAL "\x09" } ;
        if ( $shnum == 10 ) { printf FINAL "\x0a" } ;
        if ( $shnum == 11 ) { printf FINAL "\x0b" } ;
        if ( $shnum == 12 ) { printf FINAL "\x0c" } ;
        if ( $shnum == 13 ) { printf FINAL "\x0d" } ;
        if ( $shnum == 14 ) { printf FINAL "\x0e" } ;
        if ( $shnum == 15 ) { printf FINAL "\x0f" } ;
}

sub DispHelp () {
        $\="\n";
        print "Usage:";
        print "\t-f,--input-file";
        print "\t\tThe input file name (only required option)";
        print "\t-o,--output-file";
        print "\t\tThe output file name (if not specified, *.asm becomes *.o";
        print "\t\tand anything else becomes a.out)";
        print "\t-l,--list-file";
        print "\t\tThe listing file's name (default: trailing .asm is
removed";
        print "\t\tif there and .lst is appended)";
        print "\t-s,--second-asm-file";
        print "\t\tThe second asm file's name (default: trailing .asm is";
        print "\t\tremoved if there and .nasm is appended)";
        print "\n";
        exit ;
}

if ( $ARGV[0] eq "" ) { $ARGV[0] = "-h" };

$i = 0;
$filename = "";
$outname  = "";

while ( $ARGV[$i] ne "" ) {
        $_ = $ARGV[$i];
        if ( m/^-/ ) {
                if ( m/^-f$/ ) { $filename = $ARGV[++$i] };
                if ( m/^-o$/ ) { $outname  = $ARGV[++$i] };
                if ( m/^-l$/ ) { $listname = $ARGV[++$i] };
                if ( m/^-s$/ ) { $asmname  = $ARGV[++$i] };
                if ( m/^-h$/ ) { DispHelp };
        } elsif ( m/^--\w+/ ) {
                if ( m/^--input-file$/ )      { $filename = $ARGV[++$i] };
                if ( m/^--output-file$/ )     { $outname  = $ARGV[++$i] };
                if ( m/^--list-file$/ )       { $listname = $ARGV[++$i] };
                if ( m/^--second-asm-file$/ ) { $asmname  = $ARGV[++$i] };
                if ( m/^--help/ ) { DispHelp };
        } elsif ( m/^--$/ ) {
                while ( $ARGV[++$i] ) {
                        $NasmOptions .= " ";
                        $NasmOptions .= $_;
                };
        } else {
                DispHelp()
        };
        $i++;
};

if ( $filename eq "" ) { DispHelp() };

if ( $outname eq "" ) {
        $outname = $filename;
        $outname =~ s/\.asm/.o/;
        if ( $outname eq $filename ) { $outname = "a.out" };
};

if ( $listname eq "" ) {
        $listname = $filename;
        $listname =~ s/\.asm//;
        $listname .= ".lst";
};

if ( $asmname eq "" ) {
        $asmname = $filename;
        $asmname =~ s/\.asm//;
        $asmname .= ".nasm";
};

$err = `nasm -f elf ${filename} -l ${listname} -o ${outname} `;

if ( $err ) { die "\n$err\n"};

open(LISTFILE,"${listname}") or die "\n $0: Could not reopen list file!\n";
open(ASMFILE,">${asmname}")  or die "\n $0: Could not open asm file!\n";

select ASMFILE;

open(OLDASM,$filename) or die "\n$0: Cannot open file $filename\n";

while ( $x = <OLDASM> ) {
        print $x;
}

@stab = ("n_desc", "value");
@rel_stab = ("offset");
$i = 0;
$current_section = "";
$has_text = 'FALSE';
$midst_of_macro = 'FALSE';
$line_dec = 0 ;

while ( $x = <LISTFILE> ) {
        if ( $x =~ m/[^;]*%include/ ) {
                $x = <LISTFILE>;
                while ( $x =~ m/\s+\d+\s+\<\d+\>\s+/ ) {
                        $x = <LISTFILE>;
                        $line_dec++;
                }
        }
        if ( $current_section eq ".text" ) {
                if ( $x =~ m/^\s+(\S+)\s+(\S+)\s+(\S+)\s+[^<]+$/ ) {
                        $stab[$i++] = $1-$line_dec;     #linenum
                        $stab[$i++] = $2;               #offset
                        $count++;
                        if ( $3 =~ m/-/ ) {
                                $x = <LISTFILE>;
                                $line_dec++;
                        }
                        $midst_of_macro = 'FALSE';
                } elsif ( $x =~ m/^\s+(\S+)\s+(\S+)\s+(\S+)\s+<\d+>/ ) {
                        if ( $midst_of_macro eq 'TRUE' ) {
                                $stab[$i] = $stab[$i-2]; #same linenum
                                $line_dec++;
                        } else {
                                $stab[$i] = $1 - ++$line_dec;
                                $midst_of_macro = 'TRUE';
                        }
                        $count++;
                        $i++;
                        $stab[$i++] = $2;
                        if ( $3 =~ m/-/ ) {
                                $x = <LISTFILE>;
                                $line_dec++;
                        }

                }
                $has_text = 'TRUE';
        } elsif ( $x =~ m/\s+\S+\s+\S+\s+\S+\s+<\d+>/ ) { # is it a macro?
                $line_dec++;
        }
        if ( $x =~ s/(section|segment)\s+([^\s]+)/$2/ ) {
                        $current_section = $2;
        }
};

close LISTFILE;

unless ( $has_text eq "TRUE" ) {
        $err = `nasm -f elf ${asmname} -o ${outname}`;
        print STDERR $err;
        exit;
}

#Write Stab section
$, = "\t";      #output field separator
$\ = "\n";      #output record separator

print "section .stab noalloc";
StabLine(";header",1,0,0,$count+1,length($filename)*2+3);
StabLine(";so",length($asmname)+2,"064h",0,0,0);

$offset = 12;
$i = 0;
$j = 0;
$rel_stab[$j++] = $offset + 8;

while ( $stab[$i] ) {
        StabLine(";N_SLINE" . " " . ( ($i+2) / 2 ), 0, "044h", 0,
                $stab[$i++], $stab[$i++]);
        $offset += 12;
        $rel_stab[$j++] = $offset + 8;
}

#Write .rel.stab section
print "\n\nsection .rel.stab noalloc";

open (READELF,"readelf -s ${outname} |") or die "\n$0: Could not run readelf\n";

while ( $x = <READELF> ) {
   if ( $x =~ m/\s+(\d+):\s+00000000\s+\d+\s+SECTION\s+\w+\s+\w+\s+1\s+/){ $textsymnum = $1;
   };
};
close READELF;

$i = 0;

while ( $rel_stab[$i] ne "" ) {
        RStabLine(";relocation for N_SLINE " . ($i), $rel_stab[$i], 0, 1, $textsymnum);
        $i++;
} ;

#Write .stabstr section

print "\n\nsection .stabstr noalloc";

print "","db","0";
print "","db",'"' . $asmname . '"';
print "","db","0";
print "","db",'"' . $asmname . '"' ;
print "","db","0";

close ASMFILE;

$err = `nasm -f elf ${asmname} -o ${outname}`;

if ( $err ) { die "\n$err\n" } ;

open (READELF,"readelf -h -S ${outname} |") or die "\n$0: Could not run readelf\n";


while ( $x = <READELF> ) {
        if ( $x =~ m/Start\s+of\s+section\s+headers:\s+(\d+)\s+/ ) {
                $shoff = $1;
        }
        if ( $x =~ m/Size\s+of\s+section\s+headers:\s+(\d+)\s+/ ) {
                $shentsize = $1;
        }
        if ( $x =~ m/\[\s*(\d+)\]\s+.rel.stab\s+/ ) {
                $relnum = $1;
        }
        if ( $x =~ m/\[\s*(\d+)\]\s+.stab\s+/ ) {
                $stabnum = $1;
        }
        if ( $x =~ m/\[\s*(\d+)\]\s+.stabstr\s+/ ) {
                $stabstrnum = $1;
        }
        if ( $x =~ m/\[\s*(\d+)\]\s+.symtab\s+/ ) {
                $symtabnum = $1;
        }
}
close READELF;

sysopen (FINAL,"${outname}",2,0) or die "\n$0: Could not open ${outname}";
$, = "";        #output field separator
$\ = "";        #output record separator

#set .rel.stab->type to rel
OutBin($shoff + ($shentsize * $relnum) + 4,9);

#set .rel.stab->link to .symtab
OutBin($shoff + ($shentsize * $relnum) + 24,$symtabnum);

#set .rel.stab->info to .stab
OutBin($shoff + ($shentsize * $relnum) + 28,$stabnum);

#set .rel.stab->entsize to 8
OutBin($shoff + ($shentsize * $relnum) + 36,8);

#set .stab->link to .stabstr
OutBin($shoff + ($shentsize * $stabnum) + 24,$stabstrnum);

#set .stab->entsize to 12
OutBin($shoff + ($shentsize * $stabnum) + 36,12);

#set .stabstr->type to strtab
OutBin($shoff + ($shentsize * $stabstrnum) + 4,3);

close FINAL;

#Date: 17 Mar 2002 15:51:20 -0800
#From: kitsred@hotmail.com (kired)
#Newsgroups: alt.lang.asm

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看日产精品| 色综合久久久网| 丝袜美腿亚洲色图| 亚洲成av人片在线| 日韩高清电影一区| 久久99精品国产麻豆婷婷洗澡| 日韩成人精品在线| 久久99精品一区二区三区| 国产在线精品一区二区三区不卡 | 亚洲欧洲国产日本综合| 国产精品久久久久久久久久久免费看 | 久久先锋影音av鲁色资源| 欧美一区二区三区啪啪| 日韩美女主播在线视频一区二区三区| 在线观看成人免费视频| 欧美日韩国产一二三| 91精品国产综合久久久久久久| 欧美一区二区三区成人| 久久综合九色欧美综合狠狠| 国产女人aaa级久久久级| 国产精品麻豆视频| 亚洲精品欧美在线| 九九九精品视频| av日韩在线网站| 91精品午夜视频| 欧美国产乱子伦 | 成人综合在线网站| 在线精品视频免费观看| 欧美v日韩v国产v| 国产精品卡一卡二卡三| 日韩1区2区3区| 色综合天天性综合| 欧美一区二区观看视频| 国产精品丝袜在线| 亚洲国产欧美在线| 国产 日韩 欧美大片| 欧美天堂一区二区三区| 久久综合色一综合色88| 亚洲国产cao| 成人免费看的视频| 91精品欧美久久久久久动漫 | 不卡一区二区在线| 日韩一区二区三区免费观看 | 欧美日韩在线播放一区| 中文文精品字幕一区二区| 亚洲成人av中文| 97精品国产97久久久久久久久久久久| 3d成人动漫网站| 亚洲精品网站在线观看| 精品中文字幕一区二区小辣椒| 欧美在线观看一区二区| 国产精品色哟哟| 久久超碰97人人做人人爱| 在线一区二区观看| 国产精品毛片高清在线完整版| 美女网站一区二区| 欧美日韩成人激情| 亚洲精品成人a在线观看| 成人福利在线看| 久久丝袜美腿综合| 国产一区亚洲一区| 日韩欧美综合在线| 免费在线观看精品| 欧美一级在线视频| 丝袜亚洲另类丝袜在线| 欧美日韩视频一区二区| 亚洲一区二区三区国产| 欧美亚洲图片小说| 亚洲一区二区在线视频| 色狠狠色狠狠综合| 亚洲卡通动漫在线| 在线一区二区三区做爰视频网站| 成人欧美一区二区三区小说| 成人精品在线视频观看| 国产精品私人自拍| 91热门视频在线观看| 1024成人网色www| 色婷婷av一区二区三区软件| 一区二区高清在线| 欧美午夜精品一区二区蜜桃| 亚洲一区av在线| 欧美一区二区国产| 国产自产2019最新不卡| 欧美激情资源网| 色综合天天综合网天天狠天天 | 捆绑紧缚一区二区三区视频| 欧美成人aa大片| 丰满少妇在线播放bd日韩电影| 日本一区免费视频| 日本精品免费观看高清观看| 亚洲成人免费视| 欧美一区三区四区| 国产一区二区三区四| 国产精品午夜免费| 欧美三级在线播放| 精品一二三四在线| 亚洲女人小视频在线观看| 欧美日韩激情一区| 国产精品1区二区.| 亚洲综合色噜噜狠狠| 欧美videossexotv100| 丰满白嫩尤物一区二区| 亚洲制服丝袜av| 精品播放一区二区| 色婷婷av一区二区三区gif| 视频在线观看一区二区三区| 久久综合国产精品| 色婷婷综合久久久中文一区二区| 日韩va亚洲va欧美va久久| 国产无遮挡一区二区三区毛片日本 | 91精品国产综合久久精品图片 | 极品美女销魂一区二区三区| 国产精品网站在线播放| 欧美亚洲一区二区三区四区| 国产成人午夜精品影院观看视频 | 欧美性感一区二区三区| 国产最新精品免费| 午夜伊人狠狠久久| 国产精品久久久久久亚洲伦| 日韩欧美国产精品| 色呦呦国产精品| 国产**成人网毛片九色 | 懂色av中文一区二区三区| 午夜天堂影视香蕉久久| 中文字幕中文字幕在线一区| wwwwxxxxx欧美| 欧美一级xxx| 欧美日韩精品一区二区在线播放| 99re热视频精品| www.99精品| 国产精品12区| 国内精品国产成人国产三级粉色| 亚洲一区二区三区四区在线| 中文字幕一区在线| 久久精子c满五个校花| 日韩欧美在线一区二区三区| 欧美视频一区二| 色久综合一二码| 色哟哟精品一区| 91视视频在线观看入口直接观看www | 中文字幕精品综合| 欧美一区二区啪啪| 欧美日精品一区视频| 色综合亚洲欧洲| 色久优优欧美色久优优| 91麻豆成人久久精品二区三区| 97精品超碰一区二区三区| a级精品国产片在线观看| 国v精品久久久网| eeuss鲁片一区二区三区在线看| 国产99久久精品| 成人免费观看av| 99久久综合狠狠综合久久| 成人国产精品免费网站| 成人动漫一区二区三区| 99精品欧美一区二区三区综合在线| 成人av在线观| 色婷婷av一区二区三区大白胸| 日本久久一区二区| 欧美日韩国产一区二区三区地区| 在线电影国产精品| 精品国产乱码久久久久久浪潮 | 欧美日韩大陆在线| 欧美一级片在线看| 久久精品日产第一区二区三区高清版| 精品国产一区二区国模嫣然| 国产欧美精品一区aⅴ影院 | 日本亚洲视频在线| 精品无人码麻豆乱码1区2区| 国产伦精一区二区三区| 成人白浆超碰人人人人| 91激情五月电影| 欧美日韩一区不卡| 精品国产乱码久久久久久闺蜜| 欧美极品另类videosde| 一区二区三区精品视频在线| 免费一级片91| 国产精品99久| 欧美午夜不卡在线观看免费| 欧美大片一区二区| 亚洲情趣在线观看| 美女看a上一区| 99精品一区二区| 日韩视频一区二区| 亚洲精品国产品国语在线app| 免费一区二区视频| 色婷婷国产精品久久包臀 | 一本色道久久综合狠狠躁的推荐| 在线播放亚洲一区| 国产欧美日韩久久| 日本成人在线不卡视频| 99在线精品免费| 精品国产髙清在线看国产毛片| 国产精品国产成人国产三级| 美女一区二区三区| 欧美三级欧美一级| 国产精品网站在线| 国产美女视频91| 这里只有精品免费| 亚洲女同一区二区|