Результаты поиска по запросу "inline-assembly"
Мои глаза, они болят! :-)
я пытаюсь скомпилировать этот код: #include <stdio.h> main(int argc, char *argv[]) { double y = 0; __asm__ ("fldl $150;" "fsqrt;" "fstl %0;" : : "g" (y) ); printf("%f\n", y); return 0; }Я получаю эту ошибку: sqrt.c: Assembler messages: ...
Идея здесь состоит в том, чтобы загрузить операнды перед блокировкой EBX, а также избежать любой косвенной адресации при установке значения EBX для CMPXCHG8B. Я фиксирую жесткий регистр ESI для нижней половины операнда, потому что если бы я этого не сделал, GCC мог бы свободно использовать любой другой уже принятый регистр, если бы он мог доказать, что значение было равно. Регистр EDI сохраняется вручную, так как простое добавление его в закрытый список регистров дросселей GCC с «невозможными перезагрузками», вероятно, из-за высокого давления в регистре. PUSH / POP избегается при сохранении EDI, поскольку другие операнды могут быть адресованы ESP.
аюсь написать GCC Inline Asm для CMPXCHG8B для ia32. Нет я не могу использовать__sync_bool_compare_and_swap, Он должен работать с и без -FPIC. Пока лучшее, что у меня есть (РЕДАКТИРОВАТЬ: не работает в конце концов, см. мой собственный ответ ...
вау спасибо за отличный пост Я прочитаю это и изменю это соответственно. (:
аюсь использовать cmpxchg со встроенной сборкой через c. Это мой код: static inline int cas(volatile void* addr, int expected, int newval) { int ret; asm volatile("movl %2 , %%eax\n\t" "lock; cmpxchg %0, %3\n\t" "pushfl\n\t" "popl %1\n\t" "and ...
Как сказать GCC генерировать 16-битный код для реального режима
Я пишу функцию реального режима, которая должна быть нормальной функцией со стековыми фреймами и т. Д., Но она должна использовать% sp вместо% esp. Есть ли способ сделать это?
Отрицательные измерения тактового цикла с обратной связью rdtsc?
Я пишу код C для измерения количества тактов, необходимых для получения семафора. Я использую rdtsc, и перед выполнением измерения на семафоре я вызываю rdtsc два раза подряд, чтобы измерить издержки. Я повторяю это много раз в цикле for, а затем ...
Вызов функции во встроенной сборке gcc
Скажем, я хочу вызвать функцию со следующей подписью во встроенной сборке gcc. Как я могу это сделать? int some_function( void * arg );
Чтение значения регистра в переменную C
Я помню, как видел способ использования встроенной сборки gcc для чтения значения регистра и его сохранения в переменной C. Хотя я не могу на всю жизнь вспомнить, как сформировать ассемблерное утверждение. Буду признателен за любую оказанную помощь.
Модификация элементов массива с помощью встроенной сборки
Есть ли способ изменить определенные элементы массива с помощью встроенной сборки? int move[2];Я смотрю, чтобы изменитьmove[0] а такжеmove[1] в__asm. Я новичок в ассемблерном кодировании, в основном придерживаюсь C ++, и, возможно, есть очень ...
как написать встроенные коды сборки LOOP в Xcode LLVM?
Я учусь о встроенной сборке. Я хочу написать простую процедуру в iPhone под компилятором Xcode 4 LLVM 3.0. Мне удалось написать основные встроенные коды сборки. пример : int sub(int a, int b) { int c; asm ("sub %0, %1, %2" : "=r" (c) : "r" (a), ...
Как использовать глобальную переменную в встроенной сборке gcc
Я пытаюсь использовать встроенную сборку, как это, для глобальной переменной, но компилятор выдает ошибку, говоря неопределенную ссылку наsaved_sp. __asm__ __volatile__ ( "movq saved_sp, %rsp\n\t" );saved_spобъявлен какstatic long saved_sp ...