Size: a a a

Ассемблер

2021 September 12

p

piter in Ассемблер
я уверен что портировать этот компилятор настолько же легко, насколько легко сделать файл выполнимым под линуксом и подобрать библиотеки для графики и проч.
источник

[

[BRM]White Rabbit in Ассемблер
у меня в голове долгий и, я не сказал бы, что правильный путь - сделать минимальный dsl на хаскеле, с помощью которого написать компилятор языка в натив
после получившееся дерево вычислений можно транслировать в код языка и натравить его на него же
источник

s

s54816 in Ассемблер
Это называется wine. Второй этап — winelib. А дальше можно выкинуть PE и пересобрать в нормальный ELF.
источник

P

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

p

piter in Ассемблер
есть LIEF, но он только в одну сторону, из елф в пе
источник

s

s54816 in Ассемблер
В общем-то оно читаемое настолько, насколько вообще возможно. Сделай ELF с одной RWE секцией вон тем же фасмом, возьми его как шаблон и попытайся туда втыкать все эти:
blurt the literals into the compiler's exe.
blurt the routines into the compiler's exe.

Заголовки ELF документированы, их несложно описать так же, как a pe section header is a record with. Но я бы начал просто с того, что научился бы писать 32-битный код в 32-битный ELF, не пытаясь это запустить.
источник

p

piter in Ассемблер
да, оно очень читаемо но чертовски спагеттировано ибо нет вложенных циклов и условий
источник

P

ProMiNick in Ассемблер
Я открыл велосипед - сам для себя разжевал что такое wine. Ну у меня мозг виндузятника, а не линуксоида.
источник

p

piter in Ассемблер
что такое rwe если не сложно?
источник

s

s54816 in Ассемблер
readable/writable/executable. Одна секция, в которую можно пихать и код, и данные.
источник

p

piter in Ассемблер
ого, неужели так можно было
источник

p

piter in Ассемблер
а как ты так быстро понял куда в коде надо смотреть?
источник

s

s54816 in Ассемблер
Так английский же :-D
источник

p

piter in Ассемблер
и то верно, но я прям поражён
источник

p

piter in Ассемблер
не шибко чего про это есть
источник

p

piter in Ассемблер
и знать бы вообще как "сделать ELF с одной RWE секцией вон тем же фасмом"
источник

s

s54816 in Ассемблер
источник

p

piter in Ассемблер
мммм
источник

s

s54816 in Ассемблер
format elf executable
segment executable readable writable
db 65536 dup ('X')

Оно сгенерирует ELF и одну секцию из 64к иксов. Можно эти байтики захардкодить (или из файла прочитать) и для начала научиться записывать поверх иксов код. Потом заголовки дописать, чтобы идентичные фасмовым генерировались для начала. Как-нибудь так. Работать оно от этого не начнёт, но выглядеть уже будет как ELF.

Потому что найти, где у них там линкер, можно и поиском по файлу, а вот понять, как правильно предполагается писать те же globals, что им нужно для жизни — уже сложнее.
источник

s

s54816 in Ассемблер
Потрясающая вещь. Основная проблема — переписать стандартную библиотеку. 10к строк кода, полного винды.  Ну и некоторая возня с импортами потребуется.
источник