Вопросы по теме 'gnu-assembler'

Синтаксис ljmp во встроенной сборке gcc
Я думал об использовании дальнего перехода для установки регистра сегмента кода (CS). Чтобы понять, почему я это делаю и почему я вообще имею дело с сегментацией, потребуется некоторое время, так что потерпите меня и считайте это академическим...
5186 просмотров

Сборка: переход от одного раздела к другому
Как в сборке x86 выполнить безусловный переход из одного раздела в другой? Eg: .section .text main: ... jmp here ... .section .another here: ... Думаю, это очень большой прыжок. Я получаю ошибку при попытке...
2785 просмотров
schedule 11.08.2022

Для чего используются директивы CFI в Gnu Assembler (GAS)?
Кажется, что после каждой строки стоит директива .CFI, а также существует множество вариантов таких, например, _ 1_, .cfi_endproc и т. Д. подробнее здесь . .file "temp.c" .text .globl main .type main, @function main: .LFB0:...
48769 просмотров

Что такое регистр %eiz?
В следующем ассемблерном коде, который я выгрузил с помощью objdump : lea 0x0(%esi,%eiz,1),%esi Что такое регистр %eiz ? Что означает предыдущий код?
9350 просмотров
schedule 02.05.2023

Прерывание на газе
Я пытаюсь преобразовать свою простую программу из синтаксиса Intel в AT&T (чтобы скомпилировать ее с помощью GAS). Я успешно преобразовал большую часть своего приложения, но все еще получаю сообщение об ошибке int (прерывания). Моя функция такова:...
6601 просмотров
schedule 24.03.2023

Может ли GAS (GNU Assembler) скомпилироваться для iPhone / iTouch?
Я программирую некоторые приложения для рынка iDevice, используя неофициальный Open SDK, но мне трудно установить открытую цепочку инструментов в Windows, а не в Linux (я бы использовал Linux, но не могу на своем рабочем компьютере), поэтому я...
809 просмотров
schedule 17.06.2022

Ассемблер GNU для MIPS: как генерировать инструкции sync_*?
MIPS32 ISA определяет следующий формат инструкции sync : SYNC (stype = 0 implied) SYNC stype здесь тип может быть SYNC_WMB (SYNC 4), SYNC_MB (SYNC 16) и т. д. Во встроенном ассемблере я могу использовать синхронизацию по умолчанию: __asm__...
1692 просмотров
schedule 12.09.2022

сборка руки: риск '#define'
В сборке ARM bic r0, r0, #0x1f работает отлично. теперь я хочу #define MODE 0x1f и изменить приведенный выше код на bic r0,r0, #MODE . Здесь есть риск. Если вы забудете включить заголовочный файл, в котором определено #define MODE...
1595 просмотров
schedule 10.04.2022

вызов ассемблерных функций из c
Я пытаюсь использовать функцию в сборке, вызванную из проекта C. Эта функция должна вызывать функцию libc, скажем, printf() , но я продолжаю получать ошибку сегментации. В файле .c у меня есть объявление функции, скажем int do_shit_in_asm()...
11159 просмотров
schedule 12.06.2023

Бесконечный цикл сборки
Моя эпопея со сборкой x86 продолжается, я зацикливаюсь на этом куске кода и немного озадачен. movl $1, %ecx movl $4, %edi do_loop: cmpl %edi, %ecx je do_exit ......... do_stuff ......... incl %ecx jmp do_loop do_exit: Я...
4746 просмотров
schedule 25.07.2023

Использование другого ассемблера (MASM, NASM, TASM и т. Д.) С GCC
Я уже некоторое время просматриваю вопросы здесь и в Интернете, и я не могу понять, возможно ли выполнять встроенную сборку с GCC, используя что-то другое, кроме GAS. Я пытаюсь выяснить, могу ли я избежать использования не только синтаксиса GAS AT&T...
1837 просмотров
schedule 21.05.2022

Вызов символов equ'd в GAS
Вот небольшая программа NASM: [BITS 64] [ORG 0x0000000000200000] b_print_newline equ 0x0000000000100040 start: call b_print_newline ret Соберите это: $ nasm -f bin pr-nl-a.asm -o pr-nl-a.app...
289 просмотров
schedule 21.05.2022

ARM-GAS: как загрузить адрес статического массива, определенный в некотором c-файле (PIC и обычный код)
У меня есть простой статический массив, определенный в c-файле ( const int data_input[1024]; ), и мне нужно получить к нему доступ из моего ассемблерного кода. Как правильно это сделать? До сих пор я делал это следующим образом: .global...
394 просмотров
schedule 17.04.2022

Объединение C и ассемблера (32-битный код) в 64-битной версии Linux
У меня 64-битная операционная система Ubuntu, и я изучаю 32-битную сборку. Я пытаюсь скомпилировать эти два файла: кв.с: #square.s .section .text .globl sqr .type sqr, @function sqr: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax...
1998 просмотров
schedule 19.09.2022

Правильное использование binutils в Linux для написания простого загрузчика
В настоящее время я пишу простой загрузчик в качестве личного проекта. У меня есть рабочий прототип, который был построен с использованием NASM в качестве ассемблера. Однако я хотел бы лучше познакомиться с инструментами GNU, и поэтому я пытаюсь...
783 просмотров
schedule 16.01.2023

Ассемблер GNU (64-разрядная версия Mac OS X): недопустимая инструкция: 4
Я новичок в GNU Assembler и пытаюсь выполнить этот фрагмент кода: .globl _main _main: movl $1, %eax movl $0, %ebx int $0x80 Эта программа должна завершиться системным вызовом exit ( 1 ). Скомпилировал (без предупреждений):...
1171 просмотров

Вызов метода с использованием встроенного ассемблера в gcc
поэтому, как я уже сказал, я пытаюсь вызвать метод, используя встроенный asm, используя gcc. Итак, я искал, как работает x86 и каковы соглашения о вызовах, затем я попробовал несколько простых вызовов, которые работали отлично. Затем я попытался...
1341 просмотров
schedule 28.02.2023

Получить адрес в конце набора данных?
Я читал книгу «Программирование с нуля», чтобы научиться программировать на ассемблере в Linux. У меня возникли проблемы с решением одного из упражнений в конце главы 3. В упражнении предлагается изменить следующую программу, чтобы использовать адрес...
600 просмотров
schedule 13.04.2023

проблемы с запуском Hello World / gas / Mac OS X
Я пытаюсь написать Hello World на ассемблере GNU для Mac OS X, но это ошибка шины, прежде чем он сможет напечатать «Hello World». hello.s : .global start .data .equ stdout, 1 .equ sys_write, 4 .equ sys_exit, 1 .equ kernel, 0x80 msg:...
1290 просмотров
schedule 30.10.2023

Почему я получаю ошибку сегментации?
я компилирую код gcc -g3 привет3.s -о привет .data ssttrr: .string "%d\n" .text .globl main main: mov $213, %rdx push %rdx push $ssttrr call printf add $8, %rsp mov $60, %rax xor %rdi, %rdi syscall Я понимаю...
221 просмотров
schedule 09.03.2024