Челлендж для энтузиастов
Хотите хитрую задачку для любителей чего-нибудь просимулировать? В качестве домашнего хобби. Предлагается запустить на Линуксе бинарник от мака. Будет время - я сам эту задачку осилю, а пока предложу уважаемой публике.
Текст программы классический:
Подсказка: про устройство маковских бинарников и динамических библиотек можно подсмотреть в исходниках проекта Darling.
Текст программы классический:
Если у вас линукс:#include <stdio.h>
int main()
{
printf("Hello, World!\n");
}
- на интеловском процессоре - вот вам маковский бинарник Hello-World для архитектуры x86_64: hello-x86_64
- на процессоре ARM (скажем, Raspberry Pi) - вот бинарник для архитектуры arm64: hello-arm64
Подсказка: про устройство маковских бинарников и динамических библиотек можно подсмотреть в исходниках проекта Darling.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
no subject
В такой формулировке достаточно имитировать printf().
Но чтобы эмулятор оказался хоть сколько-то универсальным, надо имитировать системные вызовы изнутри libSystem.
(no subject)
no subject
Короче я сделал не универсально, зато быстро - сишка линкуется с объектником, который `binary: .incbin hello-arm64`. Патчит адреса и запускает через pthread_attr_setstack и pthread_create.
Но конечно это неуниверсальное фуфло.
(no subject)