Приветствую. Повторил примерчик с hello world, но ГНУсный AT&T синтаксис что-то не нравит Хотел попробовать fasm'ом - нигде не могу найти Xlib.inc для него. Существует в природе? Или надо писать самому? Если у кого есть, поделитесь, или мож ссылку. И ещё вопрос: тот же пример на C++, цвет бэкграунда и шрифта поменял - нормально, попытался картинку вставить бэкграундом - облом XReadBitmapFile вроде не возвращает ошибки BadAlloc, но если затем предположительно загруженный pixmap попытаться передать в XSetWindowBackgroundPixmap, то бэкграунд окна не перерисовывается. Вместо картинки - кусок изображения десктопа, который был под окном. Как можно это исправить? Пробовал грузить как png, так и bmp. Проект в аттаче. Спасибо. _1716066776__cpp_xwindow.zip
Я не видел, но в самом примере прям в тексте константы определены. Смеяться будете, но я когда его писал описание типов и констант смотрел в соответвующем модуле из FreePascal. Перписать пример под fasm вроде можно без проблем. Какое место у тебя не получилось? pixmap это не png и не bmp, но что это за формат сейчас точно не отвечу
В примере константы понятно, что определены, только прототипов ф-ций нет, кроме того в примере пяток функций, можно конечно вручную их расписать. А если что-то другое писать, не хеловорд? Остальные прототипы, структуры, константы - как с ними быть, их же не пять штук В принципе я и с фасмом не знаком, а тут ещё и XLib... А fasm просто не может найти описания ф-ций, вот и вся ошибка. Пишет undeclared на X.... ф-ции Что касается pixmap, то я знаю, что это не png, имя png-файла - один из вход. параметров, а результат загрузки из этого файла - заполненная переменная типа Pixmap, адрес которой передается в также в функцию. Сейчас мысль появилась - попробовать qt-класс QPixmap для загрузки. Надо проверить, возможно пройдет номер...
как и со многими другими вещами, писать самому или искать что кто-то это уже сделал (это не просто - мы же не на Delphi программируем), может среди буружев кто и сделал Передача параметров функций в юникса всегда одинаковая, в Windows оказывается это называется CDECL. Проще говоря стндарт Си. Параметры через стек, сначала последний, и в конце первый, затем call на адрес функции. Если найдешь под любой ассемблер не забудь сказать. Ужас какой! А просто передать управление по адресу он не может? Вот по-этому я и перешел когда-то на as - никаких подражаний высокоуровневым языкам. Все просто. Извините за офтопик. Если знаешь аглийский то попробуй тут - http://board.flatassembler.net/forum.php?f=17
А fasm просто не может найти описания ф-ций, вот и вся ошибка. Пишет undeclared на X.... ф-ции как насчёт extrn X... ?
На extrn ... data import library '/usr/X11R6/lib/libX11.so' отзывается одним: illegal instruction Делал на примере виндового, почему-то не идёт. В чем может быть ошибка? 1719802245__gui_fasm.asm
Я тебе тут поправил немного Там поcле "Hello ..." поставь 0x0 вместо 0xA, а то я забыл Если хочешь GUI см - http://flatassembler.net/examples/gtk-examples.tar.gz Рекомендую в качестве простых примеров. 1134891567__gui_fasm.asm
отзывается одним: illegal instruction Первая строка должна быть просто format ELF чтоб был объектный файл, а потом ld иль gcc - делаешь исполняемый И extrn раскомменть
Оффтоп: Где можно прочитать про динамическое связывание, а главное про формат структуры для динамического связывания в ELFовских файлах (желательно даже на русском )
strip или ключ -Wl,-s для gcc дело в том никакой разницы быть не должно по определению ты, конечно, линкуя с помощью ld можешь убрать инициализируюший код(~2k), определив возможно пару перемнных и метку _start, но лучше этого не делать