По-прежнему возникают проблемы и в Chrome? Для тех, у кого еще есть проблемы (например, я), проверьте, что у вас есть <!DOCTYPE html>
в начале вашего документа. Если вам не кажется, что Chrome полностью игнорирует все, что вы добавляете, и сохраняйте display: table-cell
.
Есть много различий. Среди них:
исполняемый формат : Каждая ОС требует, чтобы двоичные файлы соответствуют определенному двоичному формату. Для Windows это портативный файл исполняемый (PE). Для Linux это эльф большую часть времени (он также поддерживает другие типы).
Бинарный интерфейс приложения : Каждая ОС определяет набор функций первичной системы, а также способ их программы. Это принципиально отличается между Linux и Windows. Хотя инструкции, которые вычисляют 2 + 2, идентичны на Linux и Windows в архитектуре x86, то, как приложение запускается, как он распечатывает выход, а так, как он выходит, отличается от операционных систем.
Да, программы Linux, так и Windows на архитектуре X86 используют инструкцию, набор инструкций, которые поддерживает CPU, которая определяется Intel.
Да, но код неизменно вызывает библиотеку функции, чтобы сделать только что-либо - как печать «4» к терминалу. И эти библиотеки являются платформами, специфическими и отличаются между Linux и Windows. Вот почему он не портативный - не, действительно, проблема на уровне обучения.
Это из-за разницы Как программа загружена в память и дает ресурсы для запуска. Даже самые простые программы должны иметь кодовое пространство, пространство данных и возможность приобретения памяти выполнения и выполнять ввод / вывод. Инфраструктура для выполнения этих низкоуровневых задач полностью отличается между платформами, если у вас нет какого-либо адаптационного слоя, например вина или Cygwin.
Предполагая, однако, что вы могли бы просто вводить произвольные собранные инструкции CPU в сегмент кода и получить этот код для выполнения, то да, тот же код будет работать на любой платформе. Тем не менее, было бы довольно ограничено, и делать сложные вещи, такие как даже прыжки на внешние модули потерпят неудачу, из-за того, как эти вещи делаются по-разному на разных платформах.
Проблема 1 - это формат изображения. Когда приложение запущено в исполнение, ОС должен загрузить изображение Ambiaton, выясните свою точку входа и запустите ее оттуда. Это означает, что ОС должна понимать формат изображения, и между различными ОС есть разные форматы.
Проблема 2 является доступом к устройствам. После запуска приложение может прочитать и писать реестры в процессоре и вот об этом. Чтобы сделать что-нибудь интересное, как отображать символ на консоли, ему нужен доступ к устройствам, и это означает, что он должен просить такой доступ с ОС. Каждая OS имеет другой API, который предлагается получить доступ к таким устройствам.
Проблема 3 - привилегии. Недавно запущенный процесс, возможно, понадобится местоположение памяти, чтобы сохранить что-то, не может выполнить все с редакциями. Это означает, что ему необходимо выделить RAM и настроить перевод с VA на физический адрес. Это привилегии операций только ОС может сделать и снова, API для доступа к этим сервисам варьируется между OSS.
Нижняя строка заключается в том, что приложения не являются писателями для процессора, а для набора примитивных услуг Предложение ОС. Альтернатива состоит в том, чтобы написать приложения против набора примитивных услуг. Предложения виртуальной машины, и это приводит к приложениям, которые являются более или менее портативными, например, приложения Java.
Вот некоторые из причин, по которым я могу подумать о верхней части моей головы:
Для второго вопроса: Windows работает только на X86, X64, а IA64 (не уверен в мобильных версиях). Для Linux см. здесь .