Re: Assembler Linux/Windows
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 19.11.13 13:26
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Ассемблерный код одного и того же программного кода, скомпилированного под Linux и Windows одинаков, если не считать разницу в форматах исполняемых файлов? Я имею ввиду разницу именно в наборе (не последовательности) используемых инструкций, который загружается в сегмент кода в памяти.


Очевидно, нет. Как минимум разница в calling convention, которая начинает быть заметной хотя бы при одной реальной функции. Например, на ix64 регистр первого аргумента — RDI для Linux и RCX для Windows. Подробности тут (для ясности ограничимся x86 во всех основных разрядностях).

Далее, я не могу себе представить полный исполняемый файл без системных вызовов (кому он такой нужен?) Если используются стандартные функции C вроде puts, то они вызовут write из libc в Linux, но WriteFile из user*.dll в Windows. Далее эти библиотечные функции сделают системные вызовы, но разные и по-разному. Если код будет использовать другие средства, то видимая разница уже будет в них.

Надеюсь, этого достаточно, чтобы начать копать дальше самому.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.