as & ld (как создать голый бинарник)

Модератор: Модераторы разделов

nozog
Сообщения: 4

as & ld

Сообщение nozog »

Здравствуйте
Проблема следующая:

написал маленькую прогу на асме,
сказал линуксу:
as -o test.o test.s
ld -o test test.o
в результате получил файл,
содержащий ELF заголовок и
(судя по размеру)еще кучу всего

ВОПРОС:
как превратьть полученный файл
в "голый" бинарник
(последовательность моих команд)

в опциях ld ничего не нашел
strip вроде только текстовую инфу вытряхивает
Спасибо сказали:
Serg79
Сообщения: 153

Re: as & ld

Сообщение Serg79 »

Копай в сторону 'objcopy'. Машинные инструкции находятся в секции '.text' .
Спасибо сказали:
Аватара пользователя
Red User
Сообщения: 229
ОС: Debian

Re: as & ld

Сообщение Red User »

Попробуй так:

Код: Выделить всё

ld --oformat binary -o test.bin test.o
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
Спасибо сказали:
nozog
Сообщения: 4

Re: as & ld

Сообщение nozog »

спасибо!

реализовал так:

Red User писал(а):
06.08.2008 01:34
Попробуй так:

Код: Выделить всё

ld --oformat binary -o test.bin test.o


и еще вопрос:

если писать для реального режима
то как настроить es и ds регистры
на нужные секции?
Спасибо сказали:
Serg79
Сообщения: 153

Re: as & ld

Сообщение Serg79 »

Для реального режима тебе надо использовать пакет bin86. Пакет binutils, куда входит ld работает только с 32-разрядным сплошным ('flat') режимом работы процессора.
Спасибо сказали:
nozog
Сообщения: 4

Re: as & ld

Сообщение nozog »

BIN86
но входящий в него as86 использует синтаксис Intel,
нет ли альтернативы с AT&T синтаксисом?
Спасибо сказали:
Аватара пользователя
Red User
Сообщения: 229
ОС: Debian

Re: as & ld

Сообщение Red User »

Можно использовать обычный ld и .code16:

Код: Выделить всё

    .code16
    .globl    _start
_start:
    movb    $9, %ah
    movw    $message, %dx
    int    $0x21
    ret
message:
    .ascii    "Hello, World!"
    .byte    0xd, 0xa, '$
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
Спасибо сказали:
nozog
Сообщения: 4

Re: as & ld

Сообщение nozog »

это хорошо,
но повторюсь еще раз

примеры для MASM содержат
следующие строки:

Код: Выделить всё

text         segment  'code'
             assume    CS:text,DS:data
begin:
             mov        AX,data
             mov        DS,AX

т.е. идет настройка сегментных регистров
а как их настроить в as?
Спасибо сказали:
Аватара пользователя
Red User
Сообщения: 229
ОС: Debian

Re: as & ld

Сообщение Red User »

nozog писал(а):
06.08.2008 21:31

Код: Выделить всё

text         segment  'code'
             assume    CS:text,DS:data
begin:
             mov        AX,data
             mov        DS,AX

т.е. идет настройка сегментных регистров
а как их настроить в as?

Это уже, наверное, не голый бинарник, а что-нибудь вроде MZ (DOS .EXE). Не знаю, можно ли подобное с помощью стандартных ld и as. Я только .COM для DOS собирал.
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
Спасибо сказали: