LINUX.ORG.RU

X11-приложение на чистом ассемблере под Linux

 , ,


2

5

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

Как сама статья так и перевод - большие и сложные, знаний на такое у меня уже нехватает. Если есть желающие помочь с вычиткой и поиском ошибок - велкам!

На скриншоте обычная Ubuntu и Xfce, самое главное - ч0рное окошко по центру, это и есть та самая тестовая программа из статьи, написанная на чистом ассемблере и вызывающая Х-сервер через unix-сокет.

>>> Просмотр (1366x768, 988 Kb)

★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

поглядел мельком - достойный перевод! похвально! :)

по поводу вопросиков:

  • «call frames», в контексте стека, вроде, всегда были кадрами, может, что забыл уже, конечно..

  • «function prolog» - может, «заголовок», хотя вики вон вообще предлагает не заморачиваться https://ru.wikipedia.org/wiki/Пролог_процедуры

  • «или на его мультипликатор» - «или кратное ему»

вроде, больше ни обо что не споткнулся ;)

aol ★★★★★
()

Не надо останавливаться на достигнутом, кроме ассемблера CPU ещё есть разные GPU, и у них там тоже можно что-то как-то программировать. Ждём.

Shushundr ★★★★
()

Интересно было бы посмотреть на реализацию подобного для wayland и сравнить по сложности

mittorn ★★★★★
()

Белые шрифты на белом можно заменить на шрифт Брайля.

dmitry237 ★★★★
()

Тян на обоях так себе.

kirill_rrr ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

kirill_rrr ★★★★★
()

Hello World на Assembler’е вот вообще не особо интересно, тем более иксовые.

Но расскажу вот историю. Был у нас в тусовке один очень крутой программист, который реверсил код различных проприетарных тивоизированных девайсов и писал программы под Windows с GUI на чистом асме. Кажется там вроде как был MASM?

При этом эти программы были именно что не Hello World’ы, а реализовывали довольно уникальную функциональность, настолько уникальную, что пользовались спросом даже в США и в Европе.

Пример одной из таких программ родом из 2003 года (вместе с исходниками): https://forum.motofan.ru/index.php?act=Attach&type=post&id=278298

На вопрос, почему он не писал на С и C++ как все нормальные люди тех лет (хотя там больше на Delphi писали) он мне так и не ответил.

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

На вопрос, почему он не писал на С и C++ как все нормальные люди тех лет (хотя там больше на Delphi писали) он мне так и не ответил.

Видимо, потому что сексуальные предпочтения - дело сугубо личное.

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

На вопрос, почему он не писал на С и C++ как все нормальные люди тех лет (хотя там больше на Delphi писали) он мне так и не ответил.

Чтобы китайцы не смогли запустить на своих процессорах.

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

Это не тян.

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

Qui-Gon ★★★★★
()
Ответ на: комментарий от Extraterrestrial

ты же квай гон джинн, используй силу для определения тян

Так не о себе беспокоюсь, а о юных падаванах

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

Был у нас в тусовке один очень крутой программист, который реверсил код различных проприетарных тивоизированных девайсов и писал программы под Windows с GUI на чистом асме. Кажется там вроде как был MASM?

Я даже не программист, тем более не крутой. Но тоже писал на масме программки под винду. Чисто для себя.

Пример одной из таких программ родом из 2003 года

Это fasm, не masm.

На вопрос, почему он не писал на С и C++ как все нормальные люди тех лет

masm не особо и отличался от С в плане построения кода. Те же самые процедуры, реализованые через макросы. Те же структуры, практически те же самые типы переменных. Мне было проще на ассемблере чем на С. А на fasm да, геморройно по сравнению с С.

Chord ★★★★
()

Спасибо, почитаем. Интересная тема.

urxvt ★★★★★
()

X11 + asm? Да ты точно псих! :3

Мало того что это больно, так это ещё и… никому в здравом уме не сдалось (ибо очень много телодвижений даже на простые вещи). Но для углубления очень даже.

Однозначно лайк!

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

Неважно, разведка уже докладывала:
«The development of the first Loongson chip was started in 2001.»

Shushundr ★★★★
()

трамвай из буханки хлеба жпг 😉

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

кроме ассемблера CPU ещё есть разные GPU, и у них там тоже можно что-то как-то программировать. Ждём.

Я в игры не особо играю, а другого повода туда лезть нет. Есть настроенный прикола ради NVidia Optimus под FreeBSD на одном из ноутбуков, все работает на обоих видеокартах, но врядли это для игр применимо.

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

Интересно было бы посмотреть на реализацию подобного для wayland и сравнить по сложности

Пример из статьи будет работать на Xwayland если что. На чистом Wayland такое сделать нельзя поскольку там нет сервера - некуда подключаться.

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

Hello World на Assembler’е вот вообще не особо интересно, тем более иксовые.

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

На вопрос, почему он не писал на С и C++ как все нормальные люди тех лет (хотя там больше на Delphi писали) он мне так и не ответил.

Ассемблер и тогда и сейчас считался выше уровнем чем «стандартные языки общего назначения», поэтому странен скорее вопрос. Почему писал на нем клиентский софт? Потому что смог.

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

выше уровнем

ниже. язык низкого уровня. а высокого - это 1С, SAP ABAP и что там ещё бывает.

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

Вот что сейчас в разработке:

«Профессиональная высокоуровневая разработка на Brainfuck»

«RESTful-вебсервис на Forth»

«Гостевая книга на Cobol»

«Эмулятор ENIAC»

«OpenIndiana с suspend/resume на ноутбуке»

«x86 AIX в эмуляторе под Солярисом»

«x86_64 OpenVMS в эмуляторе»

«Эмулятор Xerox»

«Разработка на Java для Амиги»

«Запуск современной HP-UX с сетью в эмуляторе»

Будет весело вообщем.

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

Почему же нельзя - запросил у композитора поверхность, дёрнул mmap и наклал туда пиксели. Конечно сервера котрый именно рисует нету, на что я каждый раз сетую когда начинают топить за wayland

mittorn ★★★★★
()

alex@ubunchu

ubunchu

Повеяло мангой из нулевых)))

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

Wayland шрифты рисовать не умеет.

Так и xorg не умеет, там fontconfig для загрузки шрефтов. Ты можешь сделать все то же самое вызвав функцию из cairo вместо сообщения в сокет иксам.

Кек, в статье про это даже есть:

We could move text rendering client-side. Doing it server-side has lots of limitations.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 3)
Ответ на: комментарий от Gennadevich

это не достаточно круто

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

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

Один фиг, даже по адресу

Превышено время ожидания ответа от сайта teletype.in

ну или сам у себя в терминале набери host teletype.in

$ host teletype.in ;; connection timed out; no servers could be reached

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

«call frames», в контексте стека, вроде, всегда были кадрами, может, что забыл уже, конечно.

Вообще говоря «frame» - это что-то очерченное по периметру, например «framed» может употребляться в контексте «быть задержанным». И я думаю ножки «кадра» растут из «framed picture». Мои 2 копейки.

bugfixer ★★★★★
()

прочитал как «переписал X11 на ассемблере», перечитал и разочаровался ((
а функции дергать из .so - так любой(современный) яп может

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

На скрине показано что умеет.
Да, он не умеет это делать хорошо, но это уже другой вопрос. С чистого ассемблера ты всё равно ttf ее нарисуешь, так что в контексте этой программы иксы лучше т.к позводяют хотя бы не тащить глифы с собой

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