1
голосов
3ответов
2024 просмотров

x86 Assembly, misleading Error

I am trying to learn assembly, and have a program in AT&T syntax, for use with GNU AS Which I believe should work. I receive this error with GDB: Program received signal SIGSEGV, Segmentation fault. .PROGRAM () at concatenator.s:60 60 call strlen Current language: auto; curr...

55
голосов
5ответов
5797 просмотров

GCC's assembly output of an empty program on x86, win32

I write empty programs to annoy the hell out of stackoverflow coders, NOT. I am just exploring the gnu toolchain. Now the following might be too deep for me, but to continuie the empty program saga I have started to examine the output of the C compiler, the stuff GNU as consumes. gcc version 4....

11
голосов
6ответов
7541 просмотров

gas vs. nasm: which assembler produces the best code?

Both tools translate assembly instructions directly into machine code, but is it possible to determine which one produces the fastest and cleanest code?

5
голосов
1ответов
3471 просмотров

документация директив GNU ассемблера

Сейчас пытаюсь освоить сборку mips. С этой целью я написал очень простую программу на c ... int main(){} ... и скомпилировал его на машине mips с параметром -S для gcc для генерации кода сборки. Вот как выглядит начало основной функции: .ent main основной: .frame $ fp, 8, $ 31 ...

0
голосов
3ответов
2768 просмотров

Где я могу найти список прерываний для набора инструкций i486-linux-gnu?

Я разрабатываю компилятор для моего старшего проекта в школе, и я использую AS (GNU Assembler) для сборки. Все мои тесты были довольно успешными, но списки прерываний, которые я видел, не работали и не соответствовали моему тестовому коду. Актуальная информация для этой версии AS: Ассембл...

5
голосов
2ответов
4162 просмотров

Как перевести "push byte" NASM в синтаксис GAS?

Я «портирую» исходный код NASM на GAS и обнаружил следующие строки кода: push byte 0 push byte 37 GAS не поддерживает "push byte" или "pushb". Как мне перевести приведенный выше код в синтаксис GAS? Спасибо

38
голосов
7ответов
27519 просмотров

Можно ли создавать потоки без системных вызовов в сборке Linux x86 GAS?

Во время изучения «языка ассемблера» (в Linux на архитектуре x86 с использованием GNU в качестве ассемблера) одним из важных моментов была возможность использования системные вызовы . Эти системные вызовы очень удобны и иногда даже необходимы, поскольку ваша программа работает в пользовательск...

11
голосов
2ответов
14645 просмотров

Что означает .comm?

Я только что перевел эту программу, #include <stdio.h> int dam[1000][1000]; int main (int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); return 0; } для сборки с использованием gcc production, .cstring LC0: .ascii "Hello, Wor...

1
голосов
1ответов
754 просмотров

создание подстроки на ассемблере Linux IA-32 (газ)

Я хочу создать подстроку (министроку) из 3 символов asciz из моей исходной (строки). Во время работы штука не печатает, поэтому я не знаю, что, черт возьми, делаю. Почему не печатается? Правильно ли я создаю министроку? .section .data thestring: .asciz "111010101" ministring: .asciz "" for...

4
голосов
2ответов
1761 просмотров

Разделение строки на ассемблере Linux AT&T IA-32 (газ)

.section .data astring: .asciz "11010101" format: .asciz "%d\n" .section .text .globl _start _start: xorl %ecx, %ecx movb astring(%ecx,1), %al movzbl %al, %eax pushl %eax pushl $format call printf addl $8, %esp movl $1, %eax movl $0, %ebx int $0x80 Предположим, я хочу разбить строку ...

7
голосов
6ответов
8257 просмотров

Увеличение от 0 до 100 в ассемблере

Это немного странно, но я сегодня ковырялся в ассемблере GNU (я хочу иметь возможность хотя бы прочитать синтаксис) и пытался заставить этот небольшой надуманный пример работать. А именно, я просто хочу перейти от 0 к 100, все время распечатывая числа. Итак, через несколько минут я пришел к след...