LINUX.ORG.RU

Ответ на: комментарий от pacify

Вообще-то gas должен ещё, как минимум, поддерживать Intel'овский синтаксис.

   Good news are that starting from binutils 2.10 release, GAS supports Intel syntax too. It can be triggered with
   .intel_syntax directive.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от pacify

Нет, не сжуёт. Это какой-то немного другой синтаксис.

Вот после приведения к такому виду:

.intel_syntax
.globl _start
_start:
  mov %eax,__NR_exit
  mov %ebx,0x00
  int 0x80
__NR_exit equ 01
Остаётся всего одна ошибка:
test.s:7: Error: no such instruction: `__nr_exit equ 01'

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

На главной странице сайта приведена ссылка на текст GNU GPLv3.

И? В архиве asmtoelf.lzma нет ссылки ни на вашу главную страницу сайта, ни на текст лицензии на ней. Связь невозможно проследить.

Как мне узнать под какой лицензией написан скрипт, если я наткнусь на ваш проект в виде сохранённого архива года, скажем, через два?

EXL ★★★★★
()
Ответ на: комментарий от saahriktu

Теперь другое дело.

Пожалуйста не забывайте обозначать лицензии в ваших будущих проектах.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Преимущество обычного ассемблера в том, что можно кросс-компиляцию. А в этом случае (gcc) будет танец с бубнами.

pacify ★★★★★
()
Ответ на: комментарий от pacify

Для gas'а это не оператор, а директива. Допиленная строчка приняла вид

.equ __NR_exit, 01
После этого GCC наехал на отсутствие определения main в ассемблерном коде.

А вот такое

.intel_syntax
.globl main
main:
  mov %eax,__NR_exit
  mov %ebx,0x00
  int 0x80
.equ __NR_exit, 01
собирается без проблем.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Siado

Оно тебе надо?

Может он со Stackoverflow упёр ))

pacify ★★★★★
()
Ответ на: комментарий от saahriktu

собирается без проблем

Поздравляю. А ты свою программу до этого на чём тестировал, на каких asm-исходниках?

pacify ★★★★★
()
Ответ на: комментарий от pacify

Нет, только в одном направлении.

prog.c -> prog.s -> prog.o -> prog

Эта же цепочка происходит и при команде

gcc -o prog prog.c
Но, можно не выполнять всю цепочку шагов за один раз, и оставиться на этапе получения ассемблерного кода. А затем в любой момент продолжить эту цепочку моим скриптом с последнего шага. При этом, сам исходник на Си уже не нужен. И можно получить бинарник даже если сам автор распространяет только ассемблерный код своей программы.

При этом, появляется возможность написать код на Си, получить его ассемблерное представление, внести дополнительные правки в ассемблерный код, а затем получить бинарник из этого модифицированного ассемблерного кода.

Ну и, да, можно сразу писать ассемблерный код.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Вообще, это доказывает целых два факта — существование плоской земли и реальность реинкарнации. Первое доказывается элементарно — так как в любой точке дна снизу может постучать саахрикту, то это, очевидно, опровергает наличие центра, дно простирается на бесконечную глубину. Второе тоже затруднений не вызывает — любить однобайтные кодировки, ассемблер и прочее такое может только программист, родившийся в 19м веке, саахрикту явно моложе, поэтому он, очевидно, реинкарнация.

redgremlin ★★★★★
()
Ответ на: комментарий от saahriktu

получить его ассемблерное представление, внести дополнительные правки в ассемблерный код, а затем получить бинарник из этого модифицированного ассемблерного кода

Тебе хоть раз на практике это пригодилось?

Знаешь, я немного занимался оптимизацией asm-кода, и могу сказать что главное здесь - алгоритм, а не язык. За счёт чистого asm-кода без изменения алгоритма зачастую ты можешь вытянуть лишь 10% по времени выполнения. Компилятор gcc достаточно эффективен.

pacify ★★★★★
()
Ответ на: комментарий от pacify

Пока ещё нет.

Ну так я же не про оптимизацию говорю. А о том, что часть программы можно написать на Си, а другую часть добавить уже в ассемблерный код. Причём непосредственно, а не через ассемблерные вставки.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

часть программы можно написать на Си, а другую часть добавить уже в ассемблерный код

Можно. Но зачем тебе это?

pacify ★★★★★
()
Ответ на: комментарий от pacify

Пока ещё не придумал. Пока просто сделал более универсальный скрипт, который применим не только в этом случае.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Barracuda72

Гм. На stackoverflow расписывали схему через объектный файл, а тут, оказывается, можно сразу без промежуточных объектых файлов...

saahriktu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.