2011-02-09 5 views
3

Какое это имеет значение, если вы собираете, связываете и загружаете код языка ассемблера или код C в среде DOS или в среде Windows? не должно быть одинаковым? ведь выполнение выполняется микропроцессором, а не операционной системой. Я изучаю язык ассемблера из старой книги эпохи MS-DOS. Это неудача? не является языком ассемблера и его исполнением кода, независимым от O/S? или в этом отношении любой код, написанный на других языках?Является ли операционная система абстракцией?

ответ

7

не является языком ассемблера и его исполнением кода, независимым от O/S? или в этом отношении любой код, написанный на других языках?

Да и нет.

Да. Язык машины не зависит от ОС. Неважно, написано ли вы сами, или компилятор C написал это для вас.

Нет. Для фактического запуска программного обеспечения вам необходимо использовать ОС. Если вы хотите что-то сделать полезно, вам нужно будет позвонить в OS API. Это полностью зависит от ОС.

+0

@ S lott Итак, какая именно роль ОС в запуске программного обеспечения? копирование его в память, выделение сегментов памяти, копирование адреса первой инструкции на IP? но делая все это, как имеет значение, является ли программное обеспечение программой сборки или C? Я хочу спросить, что для ОС исполняемый файл является исполняемым файлом, независимо от того, на каком языке он был написан, с каким компилятором он был скомпилирован. – KawaiKx

+1

@Saurabh: «Как это важно, если программное обеспечение является программой сборки или C?» (1) это не имеет значения, и (2) это не то, о чем спрашивает ваш вопрос. ** ** уточните ** ваш вопрос, если это неверно. –

0

Да, операционная система «стандартизирует» связь между нашими программами и процессором, так что printf() будет вести себя как ожидалось как на Linux, так и на окнах (и других), на разных версиях этих ОС и на разных аппаратная конфигурация.
И, теоретически, можно запускать ту же программу на одном процессоре с различными ОС, поскольку коды операций, очевидно, одинаковы, но этого не происходит из-за денег (предположим, что произойдет, если однажды linux может запускать приложения Windows ..).
Итак, хотя возможность запуска или не двоичного файла должна зависеть только от процессоров, это также зависит от ОС.

Смежные вопросы