Вопросы по теме 'inline-assembly'
Использование C с проблемой начинающего встроенного ассемблера
Я просто тестирую и пытаюсь узнать, как ассемблер работает с C. Итак, я просмотрел несколько руководств и обнаружил следующее:
__asm
{
mov ax,0B800h //startaddress for the screen memory (in textmode)
mov es,ax //add...
1670 просмотров
schedule
09.10.2021
Объяснение кода 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 просмотров
schedule
09.09.2021
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