Почему значение первого байта, может не совпадать?
От: nen777w  
Дата: 05.11.18 14:08
Оценка:
  "Код"
#include <stdio.h>
int main()
{
    unsigned int lbl_begin;
    __asm { mov dword ptr lbl_begin, offset l_begin };

    __asm jmp l_end;
l_begin:
    __asm _emit 0x00;
    __asm _emit 0x01;
    __asm _emit 0x02;
    __asm _emit 0x03;
l_end:

    unsigned char c0 = ((unsigned char*)lbl_begin)[0];
    if (c0 == 0x00) printf("Equal\n"); else printf("Not Equal\n");
    unsigned char c1 = ((unsigned char*)lbl_begin)[1];
    if (c1 == 0x01) printf("Equal\n"); else printf("Not Equal\n");
    unsigned char c2 = ((unsigned char*)lbl_begin)[2];
    if (c2 == 0x02) printf("Equal\n"); else printf("Not Equal\n");
    unsigned char c3 = ((unsigned char*)lbl_begin)[3];
    if (c3 == 0x03) printf("Equal\n"); else printf("Not Equal\n");

    return 0;
}


У меня иногда печатает:

Equal, Equal, Equal, Equal

а иногда

Not Equal, Equal, Equal, Equal


Оптимизации отключены. С чем это может быть связяно?
Отредактировано 05.11.2018 14:09 nen777w . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.