Описание тега inline-assembly

Сборка, встроенная в исходный код на другом, более высоком языке, например сборка x86, встроенная в C или C++.
1 ответ

Добавление значений в C с использованием встроенной сборки

Я пытаюсь понять основы встроенной сборки в C (сборка ATT), поэтому я тренируюсь, добавляя 2 переменные. Итак, это работает как задумано; переменная src копируется в переменную dst, а затем переменная dst добавляется на 5. Значения src и dst равны 1…
25 янв '15 в 11:53
1 ответ

Ошибки при вставке регистров xmm в стек

Я пытаюсь вставить регистр xmm в стек в коде x86_64 C, используя встроенную сборку в стиле GCC. Я посмотрел на ответ на этот вопрос и использую этот код int main(void) { asm volatile("subq 16, %rsp"); asm volatile("movdqu xmm0, xmmword ptr (%rsp)");…
18 мар '15 в 01:56
1 ответ

Ссылаясь на глобальную переменную с AsmJit

Мне нужно загрузить адрес существующей глобальной переменной / внешней переменной в регистр с помощью операции lea. Возможно ли это в AsmJit? Кажется, что связанная функция ptr принимает только GpVar, который должен быть создан в AsmJit.
27 янв '14 в 03:56
1 ответ

Встроенный сборочный эквивалент директивы.data MASM

Мне любопытно, что эквивалент (например) .data x dword 42 .code main proc ; Do stuff here. ret main endp end было бы, если бы я писал встроенную сборку (в D). Я понимаю, что мог сделать что-то вроде int main() { int x = 42; asm { // Do stuff here. }…
04 авг '13 в 03:24
1 ответ

Суммируйте числа в буфере, используя встроенную сборку в C++

Я новичок в программировании на ассемблере и столкнулся с проблемой, которая может быть очевидна для опытных пользователей на ассемблере. У меня есть 100-байтовый буфер, и мне нужно найти сумму каждого n-го байта для n = 1 до 5 и сохранить результат…
07 окт '14 в 13:12
0 ответов

Несоответствие типов операндов для "jmp"

Я каждый. У меня проблема со следующим фрагментом кода: asm volatile(" \ cli; \ mov %0, %%ecx; \ mov %1, %%esp; \ mov %2, %%ebp; \ mov %3, %%cr3; \ mov $0x12345, %%eax; \ sti; \ jmp *%%ecx " : : "r"(eip), "r"(esp), "r"(ebp), "r"(current_directory -&…
14 июн '18 в 08:45
4 ответа

Встроенная сборка X86, запись в массив C

Информация о сборке: Использование Visual Studio 2010 для написания встроенной сборки, встроенной в C Здравствуйте, я пытаюсь записать в массив символов в C и пытается имитировать действие этого кода C: resNum[posNum3] = currNum3 + '0'; В настоящее …
1 ответ

Ошибка синтаксиса встроенного ассемблера

Я получал какую-то странную ошибку при разработке своей операционной системы. Я делал драйвер ввода-вывода, используя outb а также inb, мой outb Функция выглядит следующим образом: static inline void outb(uint16_t port, uint8_t val) { __asm("outb %0…
09 фев '16 в 08:52
3 ответа

Линейная сборка GCC со стеком

Мне нужен такой встроенный код сборки: У меня есть пара (так, это сбалансировано) операции push/pop внутри сборки У меня также есть переменная в памяти (так, не регистр) в качестве ввода как это: __asm__ __volatile__ ("push %%eax\n\t" // ... some op…
18 фев '18 в 16:11
2 ответа

Встроенная сборка GCC - чем отличаются __volatile__ и "память"?

Во встроенной сборке GCC существует два способа предотвращения оптимизации: __volatile__ ключевое слово и вставка "memory" в список клоббер-регистров. Мой вопрос в чем разница с __volatile__ а также "memory" - Кажется, они одинаковы... Однако сегодн…
05 июн '14 в 11:56
1 ответ

Что означает эта встроенная сборка в тестовом наборе CodeLen LLVM-IR?

Я пытаюсь понять тестовый набор LLVM CodeGen/Generic, чтобы получить его за бэкэнд для нового процессора. Это тестовый сценарий (llvm/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll): ; RUN: llc -no-integrated-as < %s ; XFAIL: sparc-sun-s…
30 сен '15 в 23:13
1 ответ

Вычислить -2xy - 3z с помощью встроенной сборки MSVC

Ребята, вы можете сказать мне, где я ошибаюсь? Мне нужно вычислить это в inline-сборке -2xy - 3z. int solution(int x, int y, int z) { x=4; y=5; z=2; int result; __asm { mov eax, -2 imul [x] imul [y] mov ebx, eax mov eax, -3 imul [z] sub eax, ebx mov…
12 окт '17 в 17:42
1 ответ

Встроенная сборка GCC: ограничения

У меня возникают трудности с пониманием роли, которую играют ограничения в встроенной сборке GCC (x86). Я прочитал руководство, которое объясняет, что конкретно делает каждое ограничение. Проблема в том, что, хотя я понимаю, что делает каждое ограни…
10 окт '10 в 02:03
3 ответа

Встроенные ошибки сборки: мусор `-4(%ebp)'после регистрации

GCC сообщает нежелательную `-4(%ebp)'после ошибок реестра для моих следующих кодов: static __inline__ int xchg_asm(int* lock, int val) { int ret; __asm__ __volatile__( LOCK "movl %1,%%eax; xchg (%1),%2 ; movl %%eax %0" :"=m" (ret) :"d"(lock), "c"(va…
30 июн '12 в 12:59
1 ответ

Как эффективно накапливать массивы данных в C

Проблема в том, что у меня огромная матрица A и задан (довольно большой) целочисленный массив, например, скажем, моя матрица: [0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4, ...............] и целочисленный масс…
13 фев '16 в 17:01
2 ответа

Проблема встроенной сборки GNU

Я провел некоторый рефакторинг кода для платформы c167 и наткнулся на проблему встроенной сборки. Предыдущий код: asm volatile ( " extp #pag:%0, #3 mov r4, pof:%0 @ R4 = g_nRcvBufCount sub r4, #1 @ R4 = R4 - 1 mov pof:%0, r4 @ g_nRcvBufCount = R4" :…
29 ноя '10 в 12:50
1 ответ

Регистры встроенного блока сборки реальны или фальшивы?

Microsoft visual studio имеет функцию под названием "Встроенная сборка", которая дает вам возможность писать свои x86-коды в программе на C++ внутри блока __asm. Теперь у меня есть вопрос об этой функции. Регистры в этом блоке - реальные регистры ил…
14 ноя '18 в 17:01
2 ответа

Встроенный sdcc asm() не работает

Я использую GCC (исправление) SDCC с Eclipse IDE для компиляции кода C для встроенной цели архитектуры 8051. Мне нужно вставить несколько NOP для синхронизации, и я не могу заставить компилятор принимать встроенный код сборки. С __asm__ ("; This is …
31 дек '14 в 04:01
1 ответ

Ошибка: не удалось вставить модуль. Неизвестный символ в модуле

Я пытаюсь портировать RR0D Rasta Ring0 Debugger с 32-битного Linux на 64-битный Linux. Я преобразовал 32-битную встроенную сборку gcc в 64-битную, используя vim regex, как указано в моем вопросе: Как преобразовать 32-битную встроенную сборку gcc в L…
06 окт '12 в 21:55
2 ответа

Указатель на встроенную метку asm для PIC 16F и Hitech C

Я программирую 16F886 и вот пример встроенного ассемблера: #asm psect TxtData,class=CODE,delta=2 global _text1,_text2 _text1: dw 'T','E','X','T','1',0 _text2: dw 'T','E','X','T','2',0 #endasm Мне нужно указать EEADR и EEADRH на каждую из меток, чтоб…
20 янв '15 в 23:00