Size: a a a

Ассемблер

2021 June 21

АШ

Алексей Шведов... in Ассемблер
Хахах)
источник

DB

Dima Bat in Ассемблер
а так можно в gnu-gcc?
источник

АШ

Алексей Шведов... in Ассемблер
Ну как-то же пишут ядро, где вызывают main из ассемблера в Си
источник

s

s54816 in Ассемблер
Можно. На уровне объектных файлов вообще нет разницы, на чём там оно было написано.
источник

DB

Dima Bat in Ассемблер
чет пока не вижу статей в инете на эту тему на русском🤣 Я так понял тема не популярная
источник

s

s54816 in Ассемблер
Да зачем тут статьи?
# 1.S
.intel_syntax noprefix
.section .text
.global _main

.extern _some_c_function

_main:
   push    offset some_text
   push    12345
   call    _some_c_function
   add     esp,8
   xor     eax,eax
   ret

.section .data
some_text: .asciz "some text"

// 2.c
#include <stdio.h>

void some_c_function(int n, const char *s)
{
   printf("Hello, world!\n%d %s\n", n, s);
}

Собирать можно просто cc -m32 1.S 2.c
источник

DB

Dima Bat in Ассемблер
поясни пожалуйста это второй файл .С я понял
источник

DB

Dima Bat in Ассемблер
1.S непонятно
источник

АШ

Алексей Шведов... in Ассемблер
Ассемблерный файл
источник

DB

Dima Bat in Ассемблер
и как это вместе соеденить
источник

АШ

Алексей Шведов... in Ассемблер
С помощью линковщика. Компиляторами получаешь объектные файлы
источник

DB

Dima Bat in Ассемблер
а че не .asm?
источник

s

s54816 in Ассемблер
Что именно? Там ассемблер, обычный gas.
источник

АШ

Алексей Шведов... in Ассемблер
Потому что используется GAS — .S
Но расширение вообще ни на что не влияет
источник

s

s54816 in Ассемблер
Можно и .asm, какая разница-то?
источник

s

s54816 in Ассемблер
Можно воспользоваться тем, что gcc — это не компилятор, а драйвер компилятора, и пихать ему всё подряд, он сам разберётся, кого as, а кого cc1.
источник

DB

Dima Bat in Ассемблер
а почему в файле асма инклюда нет?
источник

s

s54816 in Ассемблер
Дефайна чего?
источник

АШ

Алексей Шведов... in Ассемблер
Инклуды в .c файле
источник

DB

Dima Bat in Ассемблер
нет
источник