Lines Matching refs:self

165 	my	$self = {};
169 bless $self,$class;
170 $self->{op} = $1;
171 $ret = $self;
174 undef $self->{sz};
175 if ($self->{op} =~ /^(movz)x?([bw]).*/) { # movz is pain...
176 $self->{op} = $1;
177 $self->{sz} = $2;
178 } elsif ($self->{op} =~ /call|jmp/) {
179 $self->{sz} = "";
180 } elsif ($self->{op} =~ /^p/ && $' !~ /^(ush|op|insrw)/) { # SSEn
181 $self->{sz} = "";
182 } elsif ($self->{op} =~ /^[vk]/) { # VEX or k* such as kmov
183 $self->{sz} = "";
184 } elsif ($self->{op} =~ /mov[dq]/ && $$line =~ /%xmm/) {
185 $self->{sz} = "";
186 } elsif ($self->{op} =~ /([a-z]{3,})([qlwb])$/) {
187 $self->{op} = $1;
188 $self->{sz} = $2;
194 my ($self, $sz) = @_;
195 $self->{sz} = $sz if (defined($sz) && !defined($self->{sz}));
196 $self->{sz};
199 my $self = shift;
201 if ($self->{op} eq "movz") { # movz is pain...
202 sprintf "%s%s%s",$self->{op},$self->{sz},shift;
203 } elsif ($self->{op} =~ /^set/) {
204 "$self->{op}";
205 } elsif ($self->{op} eq "ret") {
212 } elsif ($self->{op} eq "call" && !$elf && $current_segment eq ".init") {
215 "$self->{op}$self->{sz}";
218 $self->{op} =~ s/^movz/movzx/;
219 if ($self->{op} eq "ret") {
220 $self->{op} = "";
222 $self->{op} = "mov rdi,QWORD$PTR\[8+rsp\]\t;WIN64 epilogue\n\t".
225 $self->{op} .= "DB\t0F3h,0C3h\t\t;repret";
226 } elsif ($self->{op} =~ /^(pop|push)f/) {
227 $self->{op} .= $self->{sz};
228 } elsif ($self->{op} eq "call" && $current_segment eq ".CRT\$XCU") {
229 $self->{op} = "\tDQ";
231 $self->{op};
235 my ($self, $op) = @_;
236 $self->{op}=$op if (defined($op));
237 $self->{op};
243 my $self = {};
247 bless $self, $class;
248 $self->{value} = $1;
249 $ret = $self;
255 my $self = shift;
257 $self->{value} =~ s/\b(0b[0-1]+)/oct($1)/eig;
261 my $value = $self->{value};
265 $self->{value} = $value;
267 sprintf "\$%s",$self->{value};
269 my $value = $self->{value};
285 my $self = {};
290 bless $self, $class;
291 $self->{asterisk} = $1;
292 $self->{label} = $2;
293 ($self->{base},$self->{index},$self->{scale})=split(/,/,$3);
294 $self->{scale} = 1 if (!defined($self->{scale}));
295 $self->{opmask} = $4;
296 $ret = $self;
299 if ($win64 && $self->{label} =~ s/\@GOTPCREL//) {
303 $self->{base} =~ s/^%//;
304 $self->{index} =~ s/^%// if (defined($self->{index}));
305 $self->{opcode} = $opcode;
311 my ($self, $sz) = @_;
313 $self->{label} =~ s/([_a-z][_a-z0-9]*)/$globals{$1} or $1/gei;
314 $self->{label} =~ s/\.L/$decor/g;
319 $self->{index} =~ s/^[er](.?[0-9xpi])[d]?$/r\1/;
320 $self->{base} =~ s/^[er](.?[0-9xpi])[d]?$/r\1/;
325 $self->{label} =~ s/(?<![\w\$\.])(0x?[0-9a-f]+)/oct($1)/egi;
326 $self->{label} =~ s/\b([0-9]+\s*[\*\/\%]\s*[0-9]+)\b/eval($1)/eg;
331 $self->{label} =~ s/\b([0-9]+)\b/$1<<32>>32/eg;
333 $self->{label} =~ s/\b([0-9]+)\b/$1>>0/eg;
338 if (!$self->{label} && $self->{index} && $self->{scale}==1 &&
339 $self->{base} =~ /(rbp|r13)/) {
340 $self->{base} = $self->{index}; $self->{index} = $1;
344 $self->{label} =~ s/^___imp_/__imp__/ if ($flavour eq "mingw64");
346 if (defined($self->{index})) {
348 $self->{asterisk},$self->{label},
349 $self->{base}?"%$self->{base}":"",
350 $self->{index},$self->{scale},
351 $self->{opmask};
353 sprintf "%s%s(%%%s)%s", $self->{asterisk},$self->{label},
354 $self->{base},$self->{opmask};
357 $self->{label} =~ s/\./\$/g;
358 $self->{label} =~ s/(?<![\w\$\.])0x([0-9a-f]+)/0$1h/ig;
359 $self->{label} = "($self->{label})" if ($self->{label} =~ /[\*\+\-\/]/);
361 my $mnemonic = $self->{opcode}->mnemonic();
362 ($self->{asterisk}) && ($sz="q") ||
368 $self->{opmask} =~ s/%(k[0-7])/$1/;
370 if (defined($self->{index})) {
372 $self->{label}?"$self->{label}+":"",
373 $self->{index},$self->{scale},
374 $self->{base}?"+$self->{base}":"",
375 $self->{opmask};
376 } elsif ($self->{base} eq "rip") {
377 sprintf "%s[%s]",$szmap{$sz},$self->{label};
380 $self->{label}?"$self->{label}+":"",
381 $self->{base},$self->{opmask};
389 my $self = {};
394 bless $self,$class;
395 $self->{asterisk} = $1;
396 $self->{value} = $2;
397 $self->{opmask} = $3;
398 $opcode->size($self->size());
399 $ret = $self;
405 my $self = shift;
408 if ($self->{value} =~ /^r[\d]+b$/i) { $ret="b"; }
409 elsif ($self->{value} =~ /^r[\d]+w$/i) { $ret="w"; }
410 elsif ($self->{value} =~ /^r[\d]+d$/i) { $ret="l"; }
411 elsif ($self->{value} =~ /^r[\w]+$/i) { $ret="q"; }
412 elsif ($self->{value} =~ /^[a-d][hl]$/i){ $ret="b"; }
413 elsif ($self->{value} =~ /^[\w]{2}l$/i) { $ret="b"; }
414 elsif ($self->{value} =~ /^[\w]{2}$/i) { $ret="w"; }
415 elsif ($self->{value} =~ /^e[a-z]{2}$/i){ $ret="l"; }
420 my $self = shift;
421 if ($gas) { sprintf "%s%%%s%s", $self->{asterisk},
422 $self->{value},
423 $self->{opmask}; }
424 else { $self->{opmask} =~ s/%(k[0-7])/$1/;
425 $self->{value}.$self->{opmask}; }
431 my $self = {};
435 bless $self,$class;
436 $self->{value} = $1;
437 $ret = $self;
440 $self->{value} =~ s/^\.L/$decor/;
445 my $self = shift;
448 my $func = ($globals{$self->{value}} or $self->{value}) . ":";
449 if ($win64 && $current_function->{name} eq $self->{value}
466 } elsif ($self->{value} ne "$current_function->{name}") {
468 $self->{value} .= ":" if ($masm);
469 $self->{value} . ":";
498 my $self = {};
502 bless $self,$class;
503 $self->{value} = $1;
504 $ret = $self;
507 $self->{value} =~ s/\@PLT// if (!$elf);
508 $self->{value} =~ s/([_a-z][_a-z0-9]*)/$globals{$1} or $1/gei;
509 $self->{value} =~ s/\.L/$decor/g;
510 $self->{opcode} = $opcode;
515 my $self = shift;
516 if ($nasm && $self->{opcode}->mnemonic()=~m/^j(?![re]cxz)/) {
517 "NEAR ".$self->{value};
519 $self->{value};
691 my $self = {};
695 bless $self,$class;
696 $ret = $self;
697 undef $self->{value};
732 $self->{value} = ".cfi_adjust_cfa_offset\t8\n";
734 $self->{value} .= ".cfi_offset\t$$line,$cfa_rsp";
740 $self->{value} = ".cfi_adjust_cfa_offset\t-8\n";
742 $self->{value} .= ".cfi_restore\t$$line";
747 $self->{value} = ".cfi_escape\t" .
762 $self->{value} = ".cfi_$dir\t$$line" if ($dir);
770 my $self = shift;
771 return ($elf ? $self->{value} : undef);
777 my $self = {};
785 bless $self,$class;
787 $ret = $self;
788 undef $self->{value};
827 $self->{value} = $dir . "\t" . $$line;
830 $self->{value} = ""; # swallow extern
832 $self->{value} = "";
833 $self->{value} = ".def\t" . ($globals{$1} or $1) . ";\t" .
838 $self->{value} = "";
840 $self->{value} .= "${decor}SEH_end_$current_function->{name}:"
845 $self->{value} = ".p2align\t" . (log($$line)/log(2));
849 if ($flavour eq "macosx") { $self->{value} = ".mod_init_func"; }
850 elsif ($flavour eq "mingw64") { $self->{value} = ".section\t.ctors"; }
855 if ($flavour eq "macosx") { $self->{value} = ".private_extern\t$prefix$$line"; }
856 elsif ($flavour eq "mingw64") { $self->{value} = ""; }
858 $self->{value} = "$dir\t$prefix$$line";
859 $self->{value} =~ s|,([0-9]+),([0-9]+)$|",$1,".log($2)/log(2)|e if ($flavour eq "macosx");
862 return $self;
877 $self->{value} = $v;
888 $self->{value} = $v;
914 $self->{value} = $v;
917 /\.extern/ && do { $self->{value} = "EXTERN\t".$$line;
918 $self->{value} .= ":NEAR" if ($masm);
922 && do { $self->{value} = $masm?"PUBLIC":"global";
923 $self->{value} .= "\t".$$line;
927 undef $self->{value};
929 $self->{value}="${decor}SEH_end_$current_function->{name}:";
930 $self->{value}.=":\n" if($masm);
932 $self->{value}.="$current_function->{name}\tENDP" if($masm && $current_function->{name});
938 $self->{value} = "ALIGN\t".($$line>$max?$max:$$line);
954 $self->{value} = "\tD$sz\t";
955 for (@arr) { $self->{value} .= &$conv($_).","; }
956 $self->{value} .= &$conv($last);
963 $self->{value}.="DB\t"
967 $self->{value}.="DB\t"
981 $self->{value} = $v;
991 my $self = shift;
992 $self->{value};