Вопросы по теме 'gnu-assembler'
Синтаксис ljmp во встроенной сборке gcc
Я думал об использовании дальнего перехода для установки регистра сегмента кода (CS). Чтобы понять, почему я это делаю и почему я вообще имею дело с сегментацией, потребуется некоторое время, так что потерпите меня и считайте это академическим...
5186 просмотров
schedule
27.07.2023
Сборка: переход от одного раздела к другому
Как в сборке 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 просмотров
schedule
25.12.2021
Что такое регистр %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 просмотров
schedule
18.03.2022
Вызов метода с использованием встроенного ассемблера в 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