Результаты поиска по запросу "ia-32"

3 ответа

Идея здесь состоит в том, чтобы загрузить операнды перед блокировкой EBX, а также избежать любой косвенной адресации при установке значения EBX для CMPXCHG8B. Я фиксирую жесткий регистр ESI для нижней половины операнда, потому что если бы я этого не сделал, GCC мог бы свободно использовать любой другой уже принятый регистр, если бы он мог доказать, что значение было равно. Регистр EDI сохраняется вручную, так как простое добавление его в закрытый список регистров дросселей GCC с «невозможными перезагрузками», вероятно, из-за высокого давления в регистре. PUSH / POP избегается при сохранении EDI, поскольку другие операнды могут быть адресованы ESP.

аюсь написать GCC Inline Asm для CMPXCHG8B для ia32. Нет я не могу использовать__sync_bool_compare_and_swap, Он должен работать с и без -FPIC. Пока лучшее, что у меня есть (РЕДАКТИРОВАТЬ: не работает в конце концов, см. мой собственный ответ ...

2 ответа

Почему __sync_add_and_fetch работает для 64-битной переменной в 32-битной системе?

Рассмотрим следующий сокращенный код: /* Compile: gcc -pthread -m32 -ansi x.c */ #include <stdio.h> #include <inttypes.h> #include <pthread.h> static volatile uint64_t v = 0; void *func (void *x) { __sync_add_and_fetch (&v, 1); return x; } int ...

1 ответ

Бинарная бомба фаза 5

Я работал над Бинарной бомбой для школы, и я абсолютно потерян в Фазе 5. Цель задания - разобрать код и найти строку, которая, как я обнаружил, &quot;листово...

ТОП публикаций