Войти

Показать полную графическую версию : Отладка в GDB файлов ассемблера и ассемблер в Си


FatalBSD
09-06-2004, 20:39
Доброго времени суток, уважаемые!

1.Как в Си использовать ассемблер, или можно только прилинковать объектные файлы ассемблера к Си?

2.Если кто сталкивался, подскажите с каким ключом надо компилировать файлы ассемблера, чтобы в отладчике GDB их можно было отлаживать? Это наподобие ключа -g в компиляторе gcc. Для ассемблера я использую встроенный компилятор as и линковщик ld.

smooth
09-06-2004, 23:40
1. Конечно, можно. Как это делать - RTFM.
2. По умолчанию отладочная информация и так включается, что исправляется strip'ом.
Если не ошибаюсь, флаг называется "gstabs".

FatalName
10-06-2004, 19:26
Это я FatalBSD, просто у меня че-то на зодится со старым именем и я перерегистрировался.

Вы не поняли вопрос или я не понял ответ. Как использовать asm в BSD? В виндоусе я иделаю так:
int main(){
 ...
 asm{
   ...
   ...
 }
 ...
 return 0;
}
А как в BSD?

А на второй вопрос я не понял ответа. Когда я компилирую файлы для Си я делаю так:
gcc -g -o name1 name2.c
А как для ассемблера с компилятором as и линковщиком ld?
as  ...
ld  ...

smooth
10-06-2004, 22:22
Теперь я не понял. Синтаксис языка С одинаков и для BSD и для всего остального. Разница заключается в архитектуре систем, но опять же синтаксис от этого не меняется.
Что касается asm, так если Вам необходимо писать только на asm - пишите, не обязательно делать вставки.
Касаемо второй части вопроса: as -o example.o example.s
* * * * * * * * * * * * * * * * * * * * * * * * * * ld -o example example.o
а вообще man as, man ld.
Касаемо самого asm - если собрались использовать ассемблер at&t( что похвально :))
там есть заметные отличия именно в синтаксисе и от nasm и от т.д., но думаю разберетесь.


Исправлено: smooth, 22:23 10-06-2004

Добавлено:

да...как уже говорил при данной последовательности команд отладочная информация в конечный файл включается. Для того чтобы ее убрать делаете:
strip имя_файла




© OSzone.net 2001-2012