LINUX.ORG.RU

Низкоуровневый язык программирования


0

0
Какие есть низкоуровневые языки программирования под Линь(Кроме Си)? Какие есть толковые ассемблеры? Кто-нить пользовался? Как ощущения?

Просто я хочу заняться низкоуровневым кодингом под Linux, и я хотел бы посмотреть инструментарий.


Форт.

> Просто я хочу заняться низкоуровневым кодингом под Linux

Полежи, пройдёт.

Miguel ★★★★★
()
>Просто я хочу заняться низкоуровневым кодингом под Linux

А чего конкретно хочется? Если прямого доступа к железу - то либо ядро ковырять либо дос.

еще:
man iopl
man ioperm

из ассемблеров есть gas (с AT&T синтаксисом) и nasm (с интелевым синтаксисом; сильно похож на tasm, но, имхо, лучше и прозрачнее)
generatorglukoff ★★
()
> Какие есть низкоуровневые языки программирования под Линь(Кроме Си)?

Ди :) с inline-asm'ом :)

naryl ★★★★★
()
>Кто-нить пользовался? Как ощущения?

Одна из проблем - нет нормального отладчика, gdb - никуда не годится. 
Не советую начинать вообще писать на assembler под linux кроме отдельных
частей в составе высокоуровневых языков.
koTuk
()
Ответ на: комментарий от koTuk
> gdb - никуда не годится.

Почему? Багу в gcc я им когда то нашёл, больше ничего серьёзного не отлаживал, но вроде всё, что нужно, там есть.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner
>> gdb - никуда не годится.

>Почему? Багу в gcc я им когда то нашёл, больше ничего серьёзного не >отлаживал, но вроде всё, что нужно, там есть.

При всех недостатках windows у нее есть один неоспоримый плюс 
(по крайней мере был раньше :) - интуитивно понятный интерфейс. То же 
самое можно сказать о продуктах которые под нее пишутся. Очень сложно 
сосредоточиться на отладке когда надо помнить сочетание и жать кучу 
клавиш чтобы увидеть на экране то что тебе хочется. Все фронтенды 
которые я пробовал не решили для меня этой проблемы. Некоторые говорят
 - для чего нужен хороший отладчик - надо писать правильный код :) Не 
всегда так получается к сожалению. Показательный пример - попросили 
меня как то посмотреть почему не работает программа со сторонней 
библиотекой  опенсурсной - пример работает а свой код практически один
 в один из примера - нет. Причем внутри самой библиотеки результат 
правильный судя по дебаг мессагам а на выходе - полная ерунда. Изначально было неправильное направление поиска - думали во всем виноваты threads. Оказалось всего лишь config.h был включен не в том 
месте - внутри библиотеки и в самой программе где получали результат в
 виде объемной структуры оказались разные объявления типа size_t , в 
результате поля структуры которые имели этот тип смещались.
 Сомневаюсь что без отладчика быстро удалось бы найти ошибку.


koTuk
()
Ответ на: комментарий от koTuk
> Очень сложно > сосредоточиться на отладке когда надо помнить сочетание и жать кучу > клавиш чтобы увидеть на экране то что тебе хочется.

Это всего лишь дело привычки. Да и классический windbg.exe не слишком дружественен :)

Legioner ★★★★★
()
Ответ на: комментарий от Legioner
>Это всего лишь дело привычки. Да и классический windbg.exe не слишком дружественен :)

Привычка это одно, совсем другое лень - двигатель прогресса :) Я не могу себя заставить изучать некоторые вещи - regexp, sendmail.cf, интерфейс gdb :)
Вот уж чего нельзя назвать классикой так это windbg.exe.
koTuk
()
Ответ на: комментарий от ugoday
Второе потому что это глобально и надёжно? По теме: C, gas.
svr4
()
Ответ на: комментарий от Legioner
>> gdb - никуда не годится.

> Почему? Багу в gcc я им когда то нашёл, больше ничего серьёзного не отлаживал, но вроде всё, что нужно, там есть.

А его уже научили отлаживать также все форкнутые процессы?

Agent666
()
Соглашусь с Miguel'ем. Для общего развития Форт полезно глянуть. Этакий Лисп наоборот, никаких скобок, постфиксная нотация, низкий уровень - полшага от ассемблера.
silent
()
Ответ на: комментарий от undet
>Под что?

Неважно :) Если под это есть языки программирования, под него есть язык ассемблера и тривиально портируется форт.

silent
()
Ответ на: комментарий от Agent666
> А его уже научили отлаживать также все форкнутые процессы?

да

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от silent
Дык линь этож "корабельный трос толщиной меньше одного дюйма по окружности". Получится ли портануть туда форт? Или линь это рыба такая? Тогда вопрос про форт остаётся открытым :-/
undet
()
Для эффективного программирования необходимо знать assembler и целевую 
архитектуру, но писать на нем не стоит по выше указанным причинам. 
Я хочу просто показать пример неэффективного кода. 

http://members.aon.at/vormayr/spd.c.bz2 - программа для чтения и 
интерпретации spd ram. В начале spd.c есть такое:

const char translation_table[6][16]......

Мне стало интересно для чего это, потом когда посмотрел и разобрался - 
посмеялся. Человек преобразует ascii код самого в себя через таблицу 
преобразования :) Можно до посинения оттачивать алгоритм но все смазать 
подобными вещами.
koTuk
()
Ответ на: комментарий от kto_tama
Расширяйте лучше дальше своё сознание, в линуксе с отладкой всё в порядке. Если в вашем любимом ide нет гламурно выглядещего отладчика, это не значит, что gdb, strace, valgrind, oprofile, systemtap и другие тулзы исчезли.
mv ★★★★★
()
Ответ на: комментарий от mv
Не помню чтобы говорил что я программист. Скорее наоброт :)
koTuk
()
Ответ на: комментарий от undet
Платформ, куда нельзя в натуральном виде портануть Форт - очень и очень мало :) Обычно это всякие однокристаллки, где нельзя писать в ПЗУ, а ОЗУ составляет только сотни байт.
KRoN73 ★★★★★
()
Ответ на: комментарий от kto_tama
можно написать библиотечку для взаимодействия с gdb, а потом встраивать ее куда душе угодно, все что надо в принципе в гдб есть.

правда родной интерфейс гдб мне как-то больше нравится.

no1sm ★★
()
Ответ на: комментарий от mv
немножко не, то это скорее интерфейс, а вот библиотечки для работы с ним я чего-то не видел. А тут скорее интересно что-то вроде аннотаций(как в emacs'е), хотелось бы совместить интерфейс и родную гдбшную консоль с автодополнениями и прочим. gdb/mi этого к сожалению не умеет, есть такая глава GDB/MI Compatibility with CLI.
no1sm ★★
()
Молодец, только изучив ассемблер можно по-настоящему понимать Си.
xTERM ★★
()
Ответ на: комментарий от mv
хотя нет, вы правы gdb/mi самое то, но вопрос о библиотечке остается.

дополнения решаются так же как и в emacs'е, с помощью команды complete.

no1sm ★★
()
Ответ на: комментарий от no1sm
да но похоже некоторые команды придется транслировать в gdm/mi

такие как break например

b foo if bar

-break-insert -c bar foo

no1sm ★★
()
Совсем забыл про один замечательный инструмент который есть и под linux - IDA, у него появился олтадчик в последних версиях, правда я им не пользовался - неизвестно свой он или фронтенд к gdb.
koTuk
()
Ответ на: комментарий от koTuk
> интуитивно понятный интерфейс

Интуитивно понятный интерфейс только у сиськи. Всё остальное надо изучать.

> Сомневаюсь что без отладчика быстро удалось бы найти ошибку.

Учись писать корректные тест-кейсы.

anonymous
()
Ответ на: комментарий от koTuk
> Я не могу себя заставить изучать некоторые вещи - regexp

Тогда ты не программист вообще, ни разу.

> интерфейс gdb

Что там изучать? Пять комманд, больше не надо. Интерфейс любой гуёвой хреновины гораздо сложнее.

Просто у тех, кто начинал с виндовса, мозги по другому повёрнуты, не как у людей. Они готовы терпеть трудности с изучением окошечного интерфейса (потому что "так надо"), но куда как меньшие объективно трудности изучения коммандного интерфейса их пугают. Забавный такой сдвиг в сознании, малоизученный ещё.

anonymous
()
Ответ на: комментарий от anonymous
>Тогда ты не программист вообще, ни разу.

см. выше

>Просто у тех, кто начинал с виндовса

начинал я с клона cp/м на robotron 1715, виндовс использую регулярно так же как и linux

>Что там изучать? Пять комманд, больше не надо.

Перечисли если не трудно эти пять команд которых тебе в gdb достаточно для отладки ?

koTuk
()
Ответ на: комментарий от koTuk
> см. выше

Что выше? Ты не объяснил, как "программист" может не знать регулярных выражений.

> начинал я с клона cp/м на robotron 1715, виндовс использую регулярно так же как и linux

Ну, досятник, какая разница. Всё равно background неправильный, не юниксовый/мейнфреймный.

> Перечисли если не трудно эти пять команд которых тебе в gdb достаточно для отладки ?

info stack (самая часто используемая)

disas display print break

Ну и совсем тупые команды run/step*, где совсем нечего запоминать.

Нагугли себе gdb cheatsheet, распечатай и повесь на стену, если пальцы к быдломышке приросли и команды запоминать разучились.

anonymous
()
Ответ на: комментарий от anonymous
> Ну, досятник, какая разница. Всё равно background неправильный, не юниксовый/мейнфреймный.

Какие-то левые штампы вешаешь.

> Что выше? Ты не объяснил, как "программист" может не знать регулярных выражений.

Там ясно сказано что я не программист

>info stack (самая часто используемая)
>disas display print break
>Ну и совсем тупые команды run/step*, где совсем нечего запоминать.

Если ты программист то хотя бы арифметике научись. Состояние регистров и сегментов данных конечно тебя не интересует, а уж то что их надо иногда видеть как в числовом так и в символьном виде одновременно тем более, то что существуют thread и их тоже неплохо видеть. Да у одной info только больше 40 подкомманд. Интересно было бы взглянуть хоть на один проект сделанный тобой.
koTuk
()
Ответ на: комментарий от koTuk
> Там ясно сказано что я не программист

Даже тупо power user обязан знать регэкспы.

> Если ты программист то хотя бы арифметике научись.

Я назвал несколько больше чем обычно использую. То, что использую редко - поглядываю в cheatsheet.

> Состояние регистров и сегментов данных конечно тебя не интересует

Угодал. Абсолютно не интересует. Это при том, что я компиляторы разрабатываю.

> Да у одной info только больше 40 подкомманд.

Не помню, сколько лет назад я использова в последний раз что либо отличное от info stack.

anonymous
()
Ответ на: комментарий от koTuk
self-programming форту на однокристалке не поможет.
smartly ★★★
()
Ответ на: комментарий от anonymous
> Угодал. Абсолютно не интересует. Это при том, что я компиляторы разрабатываю.

Дело конечно ответственное, если не секрет - под какую архитектуру и компилятор какого языка ?
Конечно я не силен в linux и программы пишу очень редко - в качестве хобби, это меня и привлекает в linux - не будучи профессиональным программистом можно делать что-то полезное для себя на основе открытых исходников. Но интерфейс у gdb мне совсем не понравился:)
koTuk
()
Ответ на: комментарий от koTuk
> Но интерфейс у gdb мне совсем не понравился:)

вот именно
красноглазики опять повылезали и начали галдеть , что гдб - это рулез
да не рулез он нихрена
интерфейс гдб сильно ограничивает круг пользователей
если ты хакер и в состоянии пользовать его консольный интерфейс , то флаг тебе в руки
речь идет о том , что уже давным-давно есть в оффтопике - графический отладочный интерфейс
и не надо тут петь про линуксовый графический аналог , которым практически нельзя пользоваться
приличную массу программеров отталкивает от линукса то , что тут нет ничего подобного
вот над чем надо работать клепателям линуксовых ide

kto_tama ★★★★★
()
Ответ на: комментарий от koTuk
> под какую архитектуру и компилятор какого языка ?

ARM, x86, x86-64. Всякая экзотика + JITы и AOTы для виртуальных машин.

> не будучи профессиональным программистом можно делать что-то полезное для себя на основе открытых исходников

А зачем, не будучи профессиональным программистом, писать на Си? Есть много хороших, удобных, безопасных языков, со своими средствами отладки.

> Но интерфейс у gdb мне совсем не понравился:)

Не профессиональному программисту в дебаггере вообще делать нечего. Абсолютно. Дебаггер - орудие для паталогоанатома, а не для разработчкика. Мне ещё куда ни шло, обычному прикладному программисту - на фиг не надо.

Что надо, так это разумная система тестов и логи. Ну и язык с более внятной системой типов и без адресной арифметики. Когда я пишу что либо чисто прикладное, я вообще дебаггерами не пользуюсь, и никогда не пользовался.

anonymous
()
Ответ на: комментарий от kto_tama
>красноглазики опять повылезали и начали галдеть , что гдб - это рулез

Очень многие анонимусы любят повторять крылатые фразы - их тут было сазано достаточно про то что вы никто и учились не на том а в linux все есть и все намного лучше :) Но когда начинаешь касаться конкретики то как-то быстро склеиваются... Разве это не крута когда для отладки человеку достаточно видеть только стек :)
koTuk
()
Ответ на: комментарий от kto_tama
> интерфейс гдб сильно ограничивает круг пользователей

Ты не поверишь, но у дебаггеров и без того очень ограниченный круг пользователей.

> приличную массу программеров отталкивает от линукса то , что тут нет ничего подобного

Это не программеры. Они не нужны.

> вот над чем надо работать клепателям линуксовых ide

Зачем им это надо? Наоборот надо делать всё возможное, чтоб отучить плохих программистов от идиотской привычки в дебаггер лезть и из пушки по воробьям стрелять. А уж когда они хотят для этой цели пушку поудобнее и с бантиками, то это и вовсе смешно.

anonymous
()
Ответ на: комментарий от koTuk
> Разве это не крута когда для отладки человеку достаточно видеть только стек :)

Это крайняя мера, кстати. Когда корка упала и надо с ней разобраться. До момента падения в кору отладчики не нужны вообще.

anonymous
()
Ответ на: комментарий от anonymous
> А зачем, не будучи профессиональным программистом, писать на Си? Есть много хороших, удобных, безопасных языков, со своими средствами отладки.

Потому что с давних пор увлекаюсь электроникой. Раньше писал только на assembler, С - потому что ядро linux и львиная доля прикладного ПО написано на С, появилось очень много библиотек на С для однокристалок. Интерпретируемые языки меня абсолютно не привлекают.
koTuk
()
Ответ на: комментарий от kto_tama
хм, например gdb-mode в emacs весьма приятен. да, он не добавляет гуйни, розовых соплей и прочих перделок, зато весело прыгает по брейкпоинтам в сорце.
anonymous
()
Ответ на: комментарий от koTuk
> Потому что с давних пор увлекаюсь электроникой.

Ну пиши на Lava. Не вижу связи Си и электроники.

> Раньше писал только на assembler

Тише, тише, не позорься так. Такие факты биографии лучше скрывать.

> появилось очень много библиотек на С для однокристалок

Однокристаллки ты и дебажить не сможешь нормально.

> Интерпретируемые языки меня абсолютно не привлекают.

1) Тебе шашечки или ехать

2) Есть не только интерпретируемые. Посмотри на OCaml, например.

anonymous
()
Ответ на: комментарий от anonymous
>Ну пиши на Lava. Не вижу связи Си и электроники.

Не пиши на том что удобно а пиши на том что знаю я - специалист linux ?

>> Раньше писал только на assembler

>Тише, тише, не позорься так. Такие факты биографии лучше скрывать.

Давно ли знание assembler стало позорным ? Хотя для специалистов linux х.з...

>Однокристаллки ты и дебажить не сможешь нормально.

Странно слышать такое от специалиста linux :)
http://www.oshec.org/articles/otladka-avr-pod-linuh/otladka-avr-pod-linuh

Пишу я на том что лучше знаю и что мне больше нравится и как это ни странно звучит - я не одинок в своем выборе.
koTuk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.