Вопросы по теме 'gnu-assembler'
Понимание этого кода сборки руки части
.syntax unified
.thumb
.cpu cortex-m4
.arch armv7e-m
.fpu fpv4-sp-d16
/* Changes from unprivileged to privileged mode. */
.thumb_func
.section .kernel
.global raise_privilege
.type raise_privilege, %function
raise_privilege:
mrs...
4618 просмотров
schedule
18.05.2024
Что делает инструкция ljmp в системном вызове форка ядра Linux?
Я изучаю исходный код ядра Linux (старая версия 0.11v). Когда я проверил системный вызов fork, я обнаружил некоторый ассемблерный код для переключения контекста, например:
/*
* switch_to(n) should switch tasks to task nr n, first
* checking...
3167 просмотров
schedule
16.12.2023
Просто начните использовать сборку (GAS), и в этом коротком коде есть ошибка сегментации.
Сейчас я изучаю ассемблер AT&T x86. Я пишу код, который умножает два 32-битных целых числа без использования «*». Проблема в том, что отладчик постоянно говорит мне, что у меня ошибка сегментации. Вот мой код.
.global _start
.data
a:...
89 просмотров
schedule
08.10.2022
использование autoconf для создания сценариев сборки для программ на языке ассемблера
Я пытаюсь изучить autoconf и пытаюсь использовать его для создания сценариев сборки для компиляции программ на языке ассемблера, написанных в Gnu Assember (GAS).
Ниже мой файл configure.ac
AC_INIT([hello], [0.01]])...
164 просмотров
schedule
04.12.2022
Возможно ли использование инструкции для захвата указателя массива C/C++?
У меня GAS проблемы со сборкой. С компилятором Visual C++ я могу использовать значения C/C++ прямо в своих блоках сборки. Например:
int A[2] = {0, 0};
_asm
{
mov ecx, 2
lea edi, A
label1:
mov [edi], ecx
add edi, 4
loop label1
}...
43 просмотров
schedule
20.12.2023
Как вручную добавить информацию о типе отладки в символ массива сборки GNU GAS?
Например, рассмотрим следующую автономную программу true для Linux с бесполезной переменной my_longs для наглядности:
главная.S
.section .rodata
my_longs: .quad 0x12, 0x34
.text
.global _start
_start:
asm_main_after_prologue:
mov...
172 просмотров
schedule
29.04.2024
Зачем мне нужен оператор смещения?
Привет, мне пришлось написать сборку AT&T x86 для сборки Intel.
.section .data
str: .ascii "Hello world!\n"
strlen = . - str
num: .long 1337
.section .text
.global _start
_start:
movl $4, %eax
movl $1, %ebx
movl...
29 просмотров
schedule
03.12.2022
Как избежать конфликта имен в случае макросов для сборки
Я хочу объявить следующий макрос в моем файле common.h :
.macro HEX_NIBBLE reg
//LOCAL letter, end
cmp $10, \reg
jae letter
add $'0, \reg
jmp end
letter:
/* 0x37 == 'A' - 10 */
add $0x37, \reg
end:
.endm
Всякий...
138 просмотров
schedule
29.01.2024
Как пройти строку в сборке, пока я не достигну нуля? (петля strlen)
Прямо сейчас я только выясняю, как даже пройти по струне. Если код не имеет смысла, это потому, что я неправильно интерпретировал некоторую информацию. В худшем случае я действительно не знаю, что делаю.
strlen:
pushq %rbx
movq %rsi, %rbx...
365 просмотров
schedule
30.10.2022
Константа (.equ) в ассемблере
Скажем, я определяю константу, например следующую, на ассемблере:
.data
SYS_EXIT = 60
.text
.globl _start
_start:
mov $SYS_EXIT, %eax
syscall
Выполняет ли ассемблер буквально эквивалент «найти-заменить» во время выполнения, чтобы...
78 просмотров
schedule
22.04.2024
Как я могу создать объектный файл из исходного кода на ассемблере так же, как это делает clang -c main.c
Я хочу изучить детали файла obj , я создал файл main.S , когда я использую as main.S , я получаю взамен файл a.out , который можно запустить напрямую с помощью ./a.out , а ld -m elf_x86_64 a.out выдаст ошибку.
Я хочу создать объектный файл,...
82 просмотров
schedule
22.12.2023