Как выполнить машинный код (изучение блока)

Perl
  • Смешанное использование символов

    my @array = ( 1, 2, 3 );
    my $array = [ 4, 5, 6 ];
    
    my $one  = $array[0]; # not @array[0], you would get the length instead
    my $four = $array->[0]; # definitely not $array[0]
    
    my( $two,  $three ) = @array[1,2];
    my( $five, $six   ) = @$array[1,2]; # coerce to array first
    
    my $length_a = @array;
    my $length_s = @$array;
    
    my $ref_a = \@array;
    my $ref_s = $array;
    
    • Например, ни один из них не то же:

      $array[0]   # First element of @array
      @array[0]   # Slice of only the First element of @array
      %array[0]   # Syntax error
      $array->[0] # First element of an array referenced by $array
      @array->[0] # Deprecated first element of @array
      %array->[0] # Invalid reference
      $array{0}   # Element of %array referenced by string '0'
      @array{0}   # Slice of only one element of %array referenced by string '0'
      %array{0}   # Syntax error
      $array->{0} # Element of a hash referenced by $array
      @array->{0} # Invalid reference
      %array->{0} # Deprecated Element of %array referenced by string '0'
      

    В Perl6 это записано:

    my @array = ( 1, 2, 3 );
    my $array = [ 4, 5, 6 ];
    
    my $one  = @array[0];
    my $four = $array[0]; # $array.[0]
    
    my( $two,  $three ) = @array[1,2];
    my( $five, $six   ) = $array[1,2];
    
    my $length_a = @array.length;
    my $length_s = $array.length;
    
    my $ref_a = @array;
    my $ref_s = $array;
    
  • Отсутствие истинного OO

    package my_object;
    # fake constructor
    sub new{ bless {}, $_[0] }
    # fake properties/attributes
    sub var_a{
      my $self = shift @_;
      $self->{'var_a'} = $_[0] if @_;
      $self->{'var_a'}
    }
    

    В Perl6 это записано:

    class Dog is Mammal {
        has $.name = "fido";
        has $.tail is rw;
        has @.legs;
        has $!brain;
        method doit ($a, $b, $c) { ... }
        ...
    }
    
  • Плохо разработанные regex функции

    /(?=regexp)/;           # look ahead
    /(?<=fixed-regexp)/;    # look behind
    /(?!regexp)/;           # negative look ahead
    /(?regexp)/;           # independent sub expression
    /(capture)/;            # simple capture
    /(?:don't capture)/;    # non-capturing group
    /(?regexp)/;      # named capture
    /[A-Z]/;                # character class
    /[^A-Z]/;               # inverted character class
    # '-' would have to be the first or last element in
    # the character class to include it in the match
    # without escaping it
    /(?(condition)yes-regexp)/;
    /(?(condition)yes-regexp|no-regexp)/;
    /\b\s*\b/;              # almost matches Perl6's 
    /(?{ print "hi\n" })/;  # run perl code
    

    В Perl6 это записано:

    /   /;   # lookahead
    /    /;   # lookbehind
    / regexp :: pattern  /;   # backtracking control
    / ( capture )        /;   # simple capture
    / $=[ regexp ] /;   # named capture
    / [ don't capture ]  /;   # non-capturing group
    / <[A..Z]>           /;   # character class
    / <-[A..Z]>          /;   # inverted character class
    # you don't generally use '.' in a character class anyway
    /                /;   # Smart whitespace match
    / { say 'hi' }       /;   # run perl code
    
  • Отсутствие нескольких диспетчеризирует

    sub f(   int $i ){ ... }  # err
    sub f( float $i ){ ... }  # err
    sub f($){ ... } # occasionally useful
    

    В Perl6 это записано:

    multi sub f( int $i ){ ... }
    multi sub f( num $i ){ ... }
    multi sub f( $i where $i == 0 ){ ... }
    multi sub f(     $i ){ ... } # everything else
    
  • Плохая перегрузка Оператора

    package my_object;
    use overload
      '+' => \&add,
      ...
    ;
    

    В Perl6 это записано:

    multi sub infix:<+> (Us $us, Them $them) |
                        (Them $them, Us $us) { ... }
    

5
задан Justin 12 August 2009 в 10:50
поделиться

5 ответов

Отличное место для изучения программирования на ассемблере Windows для x86 - это легендарные учебники Iczelion .

Вы также можете найти инструменты MASM здесь

, и если у вас есть терпение, #asm на EFNET

4
ответ дан 13 December 2019 в 19:32
поделиться

Я рекомендую вам изучить сборку RISC вместо CISC; у вас будет меньше инструкций для изучения, и вы сможете попрактиковаться в построении большего числа конструкций более высокого уровня. Я сначала изучил сборку MIPS, потому что в ней есть отличный бесплатный эмулятор ( SPIM ) и учебник, название которого я, к сожалению, забыл, но у него был переплет старой школы, и он был кремового цвета.

2
ответ дан 13 December 2019 в 19:32
поделиться

Вы не говорите, какой процессор вас интересует, что очень важно. Однако, исходя из семейства Intel x86, существует довольно много эмуляторов, которые позволят вам безопасно запускать ваш код на вашем компьютере. рабочий стол, например это . Google по запросу "эмулятор 8086", чтобы узнать больше.

1
ответ дан 13 December 2019 в 19:32
поделиться

Начните с некоторых руководств.

Посмотрите либо на FASM, либо на MASM.

0
ответ дан 13 December 2019 в 19:32
поделиться

Возможно, вы захотите прочитать эту фантастическую: книга

4
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: