Size: a a a

Ассемблер

2021 February 07

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Valera Natural
После ваших умных слов,,,,,,,,,,,,,, я запутался с чего начать на ассемблере шваркать(
че ща умные слова? и что значит шваркать?
источник

ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
че ща умные слова? и что значит шваркать?
валера походу опять умер...
источник

s

s54816 in Ассемблер
Den
Кстати нашел прикольную штуку в линуксе, Пишем gcc -S youprogram и получаем файл youprogram.s с ассемблерным кодом программы, удобно на cи писать простенькие алгоритмы, функции, просто, комманды, и смотреть как это выглядит на асме, правда синтаксис at&t и если смотреть через nano, там подсветка синтаксиса для асма приятная :)
-masm=intel
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
s54816
-masm=intel
эт разве не для самого gas исходника?
источник

s

s54816 in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
эт разве не для самого gas исходника?
Там -Mintel.
источник

ST

Saenro T in Ассемблер
s54816
-masm=intel
-no prefix — надо добавлять?
источник

s

s54816 in Ассемблер
Saenro T
-no prefix — надо добавлять?
Нет.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Valera Natural
После ваших умных слов,,,,,,,,,,,,,, я запутался с чего начать на ассемблере шваркать(
запутался среди чего?
источник

D

Den in Ассемблер
s54816
-masm=intel
а, спс. так уже  интереснее!
источник

D

Den in Ассемблер
Saenro T
-no prefix — надо добавлять?
А он получается по дефолту выставляется тогда, там в заголовке листинга написано
источник

D

Den in Ассемблер
Вот так норм. работает, а без выходного файла что-то не всегда компилит:
gcc -S -masm=intel printc.c -o printc.s
источник

D

Den in Ассемблер
Вот тестовый код для компиляции :)

#include <stdio.h>
void print(char*);
int main()
{
print("Васёк");
return 0;
}
void print(char* a)
{
printf("Word is: %s\n",a);
}
источник

D

Den in Ассемблер
И вот такой листинг на выходе:

.file   "printc.c"
       .intel_syntax noprefix
       .text
       .section        .rodata
.LC0:
       .string "\320\222\320\260\321\201\321\221\320\272"
       .text
       .globl  main
       .type   main, @function
main:
.LFB0:
       .cfi_startproc
       push    rbp
       .cfi_def_cfa_offset 16
       .cfi_offset 6, -16
       mov     rbp, rsp
       .cfi_def_cfa_register 6
       mov     edi, OFFSET FLAT:.LC0
       call    print
       mov     eax, 0
       pop     rbp
       .cfi_def_cfa 7, 8
       ret
       .cfi_endproc
.LFE0:
       .size   main, .-main
       .section        .rodata
.LC1:
       .string "Word is: %s\n"
       .text
       .globl  print
       .type   print, @function
print:
.LFB1:
       .cfi_startproc
       push    rbp
       .cfi_def_cfa_offset 16
       .cfi_offset 6, -16
       mov     rbp, rsp
       .cfi_def_cfa_register 6
       sub     rsp, 16
       mov     QWORD PTR [rbp-8], rdi
       mov     rax, QWORD PTR [rbp-8]
       mov     rsi, rax
       mov     edi, OFFSET FLAT:.LC1
       mov     eax, 0
       call    printf
       nop
       leave
       .cfi_def_cfa 7, 8
       ret
       .cfi_endproc
.LFE1:
       .size   print, .-print
       .ident  "GCC: (GNU) 10.2.0"
       .section        .note.GNU-stack,"",@progbits
источник

D

Den in Ассемблер
Некоторые моменты правда не понятны, например вот такого типа:
.cfi_offset 6, -16
метка и потом просто цифры через запятую без комманд
источник

D

Den in Ассемблер
а вот нашел:
Аннотации начинающиеся с .cfi_ управляют отладочной информацией, которой пользуются дебагер и механизм раскручивания стека при исключениях:
.cfi_startproc задаёт начало процедуры и устанавливает начальный регистр и смещение для расчёта адреса CFA (Canonical Frame Address).
.cfi_def_cfa_offset 16 обновляет смещение CFA, говоря, что оно стало равно 16 относительно заданного (директивой .cfi_startproc) регистра (%rsp).
.cfi_offset 6, -16 говорит, что теперь регистр 6 лежит по смещению -16 от CFA (таким образом была описана инструкция push rbp).
.cfi_def_cfa_register 6 говорит, что теперь для расчёта адреса CFA используется регистр 6
источник

D

Den in Ассемблер
В общем это в стандарте dwarf описано, вот pdf-ку нашел
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Den
В общем это в стандарте dwarf описано, вот pdf-ку нашел
#book
DWARF Debugging Information Format
Version 5
источник

[

[BRM]White Rabbit in Ассемблер
Den
Вот так норм. работает, а без выходного файла что-то не всегда компилит:
gcc -S -masm=intel printc.c -o printc.s
А чем тебе годболт не нравится?
источник

D

Den in Ассемблер
[BRM]White Rabbit
А чем тебе годболт не нравится?
Ух ты, надо запробовать, просто первый раз вижу такую программу
источник

[

[BRM]White Rabbit in Ассемблер
это сайт https://godbolt.org/
источник