LINUX.ORG.RU

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

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

Как-то я лихо асм-листинг урезал.

leaq	-16(%rbp), %rcx ;; сохраняем адрес p в rcx
leaq	-4(%rbp), %rdx  ;; сохраняем адрес x в rdx
movl	$5, -4(%rbp)    ;; помещаем пятёрку в x
movq	%rdx, -16(%rbp) ;; помещаем rdx (=адрес x) в p
movq	%rcx, -24(%rbp) ;; помещаем rcx (=адрес p) в pp

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

Как-то я лихо асм-листинг урезал.

leaq	-16(%rbp), %rcx ;; сохраняем адрес p в rcx
leaq	-4(%rbp), %rdx  ;; сохраняем адрес x в rdx
movl	$5, -4(%rbp)    ;;   помещаем пятёрку в x
movq	%rdx, -16(%rbp) ;; помещаем rdx (=адрес x) в p
movq	%rcx, -24(%rbp) ;; помещаем rcx (=адрес p) в pp

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

Как-то я лихо асм-листинг урезал.

leaq	-16(%rbp), %rcx
	leaq	-4(%rbp), %rdx
	movl	$5, -4(%rbp)
	movq	%rdx, -16(%rbp)
	movq	%rcx, -24(%rbp)
Построчно:

  • Сохраняем адрес p в rcx;
  • Сохраняем адрес x в rdx;
  • Помещаем пятёрку в x;
  • Помещаем rdx (=адрес x) в p;
  • Помещаем rcx (=адрес p) в pp.

По листингу видно, что sizeof(void*) у нас 8 байт, скачок индекса до 16 из-за такого же выравнивания.