Перейти к содержанию

a ^= b ^= a ^= b


Гость

Рекомендуемые сообщения

vishel u menya spor s shefom.

est' "classika"

int a;

int b

a ^= b ^= a ^= b

___________________

vopros: deistvitel'no li proishodit pryamoi swap, ili eto compiler trick, typa swap pointers.

interesno, kakie est' meneniya.

Ссылка на комментарий
Поделиться на другие сайты

vishel u menya spor s shefom.

est' "classika"

int a;

int b

a ^= b ^= a ^= b

___________________

vopros: deistvitel'no li proishodit pryamoi swap, ili eto compiler trick, typa swap pointers.

interesno, kakie est' meneniya.

Ссылка на комментарий
Поделиться на другие сайты

perepisal dlya yasnosti v

unsigned short int a = 0xfa;

unsigned short int b = 0x02;

a = a ^ b;

b = a ^ b;

a = b ^ a;

nda, takoe vpechatlenie shto -O# menyaet sut' dela.

s -O3

main:

pushl %ebp

xorl %eax, %eax

movl %esp, %ebp

popl %ebp

ret

.Lfe1:

bez:

main:

pushl %ebp

movl %esp, %ebp

subl $4, %esp

movw $250, -2(%ebp)

movw $2, -4(%ebp)

movl -4(%ebp), %edx

leal -2(%ebp), %eax

xorw %dx, (%eax)

movw -2(%ebp), %dx

leal -4(%ebp), %eax

xorw %dx, (%eax)

movl -4(%ebp), %edx

leal -2(%ebp), %eax

xorw %dx, (%eax)

movl $0, %eax

leave

ret

gdb pokazivaet pryamoi swap. no eto ne ubezdaet.

Ссылка на комментарий
Поделиться на другие сайты

perepisal dlya yasnosti v

unsigned short int a = 0xfa;

unsigned short int b = 0x02;

a = a ^ b;

b = a ^ b;

a = b ^ a;

nda, takoe vpechatlenie shto -O# menyaet sut' dela.

s -O3

main:

pushl %ebp

xorl %eax, %eax

movl %esp, %ebp

popl %ebp

ret

.Lfe1:

bez:

main:

pushl %ebp

movl %esp, %ebp

subl $4, %esp

movw $250, -2(%ebp)

movw $2, -4(%ebp)

movl -4(%ebp), %edx

leal -2(%ebp), %eax

xorw %dx, (%eax)

movw -2(%ebp), %dx

leal -4(%ebp), %eax

xorw %dx, (%eax)

movl -4(%ebp), %edx

leal -2(%ebp), %eax

xorw %dx, (%eax)

movl $0, %eax

leave

ret

gdb pokazivaet pryamoi swap. no eto ne ubezdaet.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...