LINUX.ORG.RU

История изменений

Исправление lenin386, (текущая версия) :

Флаг переполнения - результат математических операций. Обычный mov никакие флаги не выставляет.


# include <stdio.h>

    int a;
    unsigned char b;


void main (void)
{
    scanf("%d", &a);
    b = a;
    printf ("%d %d\n", a, b);
}

  401144:       88 05 f6 2e 00 00       mov    %al,0x2ef6(%rip)        # 404040 <b>
  40114a:       0f b6 05 ef 2e 00 00    movzbl 0x2eef(%rip),%eax        # 404040 <b>
  401151:       0f b6 d0                movzbl %al,%edx
      


Исправление lenin386, :

Флаг переполнения - результат математических операций. Обычный mov никакие флаги не выставляет.


# include <stdio.h>

    int a;
    unsigned char b;


void main (void)
{
    scanf("%d", &a);
    b = a;
    printf ("%d %d\n", a, b);
}

  401144:       88 05 f6 2e 00 00       mov    %al,0x2ef6(%rip)        # 404040 <b>
  40114a:       0f b6 05 ef 2e 00 00    movzbl 0x2eef(%rip),%eax        # 404040 <b>
  401151:       0f b6 d0                movzbl %al,%edx
        0f b6 d0                movzbl %al,%edx


Исходная версия lenin386, :

Флаг переполнения - результат математических операций. Обычный mov никакие флаги не выставляет.


# include <stdio.h>

    int a;
    unsigned char b;


void main (void)
{
    scanf("%d", &a);
    b = a;
    printf ("%d %d\n", a, b);
}

   88 05 f6 2e 00 00       mov    %al,0x2ef6(%rip)        # 404040 <b>
  40114a:       0f b6 05 ef 2e 00 00    movzbl 0x2eef(%rip),%eax        # 404040 <b>
  401151:       0f b6 d0                movzbl %al,%edx