Вопросы по теме 'inline-assembly'

Использование C с проблемой начинающего встроенного ассемблера
Я просто тестирую и пытаюсь узнать, как ассемблер работает с C. Итак, я просмотрел несколько руководств и обнаружил следующее: __asm { mov ax,0B800h //startaddress for the screen memory (in textmode) mov es,ax //add...
1670 просмотров

Объяснение кода Asm
Следующий встроенный asm GCC взят из библиотеки coco LuaJit. Может ли кто-нибудь дать построчное объяснение того, что он делает? static inline void coco_switch(coco_ctx from, coco_ctx to) { __asm__ __volatile__ ( "movl $1f, (%0)\n\t"...
2085 просмотров
schedule 27.11.2021

Встроенная сборка и перезапись функций, приводящая к сбою сегментирования
Кто-то в SO разместил вопрос, спрашивая, как он может «скрыть» функцию. Это был мой ответ: #include <stdio.h> #include <stdlib.h> int encrypt(void) { char *text="Hello World"; asm("push text"); asm("call printf"); return 0;...
826 просмотров
schedule 10.09.2021

Какая польза от% c во встроенной сборке x86_64?
Я читаю исходный код KVM и сталкиваюсь со встроенной сборкой x86_64. Как в следующем коде используется «% c»? Это новая функция во встроенной сборке x86_64? Любая ссылка на новые функции во встроенной сборке x86_64 в gcc? Большое спасибо...
1479 просмотров
schedule 07.10.2021

Ошибка встроенной сборки GCC: нет такой инструкции: `stosd '
Ой, у меня есть еще одна ошибка при компиляции следующего встроенного кода сборки (с -fasm-blocks ) в GCC : _asm { mov ecx, esi shr ecx, 2 rep stosd }; GCC понимает другие инструкции stos , почему он не принимает stosd ???
2247 просмотров
schedule 28.11.2021

Использование ссылки C ++ во встроенной сборке с GCC
У меня блокировка спина с инструкцией xchg. Функция C ++ принимает блокируемый ресурс. Ниже приведен код void SpinLock::lock( u32& resource ) { __asm__ __volatile__ ( "mov ebx, %0\n\t" "InUseLoop:\n\t"...
928 просмотров
schedule 08.11.2021

Как преобразовать 32-разрядную встроенную сборку gcc Linux в 64-разрядный код?
Я пытаюсь преобразовать RR0D Rasta Ring 0 Debugger из 32-битного режима в 64-битный режим ( long mode) в Linux, используя gcc. Я знаком с 32-битной сборкой x86 (в среде MS-DOS), но я новичок в 64-битной сборке x86 и в программировании сборки Linux...
3006 просмотров
schedule 09.11.2021

смысл встроенной сборки в ядре linux
Я хотел бы узнать значение% P3 в следующем коде: #define get_user(x, ptr) \ ({ \ int __ret_gu; \ register __inttype(*(ptr)) __val_gu asm("%edx"); \...
500 просмотров
schedule 29.09.2021

Вставка адреса константы во встроенный ассемблерный код
Я хочу перевести эту функцию: iowrite32(mem1, value1); в код сборки. mem1 определяется как: int * mem1; чтобы использовать ioremap. Я написал этот код: asm volatile( "mov %[whr],%[wht]" : [whr] "=r" (mem1) :...
193 просмотров
schedule 23.11.2021

некоторые сомнения относительно циклов ARM NEON
Я написал неоновый код на ассемблере и стремился к максимальной оптимизации. Хотя задержка из-за конфликта регистров и конвейера уменьшена, разница только в 1 цикл, то есть до номера 70-0 после номера 69-0. почему это так, я не понял. вот мой...
204 просмотров
schedule 08.11.2021

Умножение 128x128 бит для процессора x86
В моем приложении мне нужно быстрое умножение 128x128 бит (результат = 256 бит). Есть ли какая-нибудь оптимизированная для x86 библиотека, выполняющая эту операцию?
363 просмотров
schedule 02.11.2021

Ошибка шины при выполнении инструкции MMX emms
Я работаю над портированием некоторого программного обеспечения со встроенной сборкой, потому что мы получили несколько отчетов об ошибках от сопровождающего Debian в разделе X32 . Код подходит как для X86, так и для X64. Мы ловим ошибку шины на...
83 просмотров
schedule 12.09.2021

Импорт символов компоновщика для встроенного ассемблера в Rust
Я хочу получить доступ к символу компоновщика, определенному в файле компоновщика во встроенном ассемблере в Rust для цели ARM. Тем не мение, asm!(".import mysymb"); приводит к ошибка:: 1: 2: ошибка: неизвестная директива .import...
438 просмотров
schedule 05.10.2021

как решить ошибку во встроенной сборке в C: 'не удается найти регистр в классе' GENERAL_REGS 'при перезагрузке' asm ''
Это часть реализации алгоритма PRESENT облегченной криптографии, оптимизированного для скорости, 8 бит, реализованного на языке C, связанного с pLayer алгоритма, реализованного встроенной сборкой. // ****************** pLayer...
118 просмотров

ARM Clang: не удалось выделить выходной регистр для ограничения 'w'
uint8_t* dataPtr; uint8x8x4_t dataVec; __asm__ __volatile__( "vldmia %1, %h0" : "=w"( dataVec ) : "r"( dataPtr ) ); Вышеупомянутый встроенный ассемблерный код ARM отлично работает при компиляции с Android NDK с...
617 просмотров
schedule 15.11.2021

Использование встроенной сборки для замены двух целочисленных переменных
(примечание редактора: это вопрос отладки о том, что не так с этой попыткой реализации (почти все), и, следовательно, не дубликат Как написать короткое блок встроенной расширенной сборки GNU для обмена значениями двух целочисленных переменных? Но...
848 просмотров
schedule 21.09.2021

Встроенный ассемблер GCC с использованием ссылок на память
Я пытаюсь написать встроенную инструкцию сборки, которая будет загружать переменную с содержимым регистра, используя указатель на эту переменную вместо прямой ссылки. Код, использующий прямую ссылку, работает нормально и выглядит так: int x;...
1223 просмотров
schedule 19.10.2021

Чтение значения указателя стека в ARM
Я пытаюсь сохранить значение регистра SP в переменной в C, вот мой код: int address = 0; asm volatile ("STR sp, [%0]\n\t" : "=r" ( address) ); но после выполнения этого кода ОС выводит на экран сообщение «Ошибка сегментации» и...
3006 просмотров
schedule 09.11.2021

Путаница по поводу другого описания clobber для встроенной сборки рычага
Я изучаю встроенную сборку ARM, и меня смущает очень простая функция: присвоить значение x y (оба типа int ), на arm32 и arm64, почему требуется другое описание clobber? Вот код: #include <arm_neon.h> #include <stdio.h> void...
57 просмотров
schedule 31.10.2021

Код после преобразования не выполняет заданное действие
Мне дали задание преобразовать определенный код из C ++ в ASM на основе синтаксиса AT&T, поэтому я начал с простых примеров и столкнулся с первой проблемой. код, с которого я начал упражнение void func() { int num = 1; std::cout <<...
65 просмотров
schedule 11.09.2021