Здравствуйте, Hard_Club, Вы писали:
H_C>Ассемблерный код одного и того же программного кода, скомпилированного под Linux и Windows одинаков, если не считать разницу в форматах исполняемых файлов? Я имею ввиду разницу именно в наборе (не последовательности) используемых инструкций, который загружается в сегмент кода в памяти.
Очевидно, нет. Как минимум разница в calling convention, которая начинает быть заметной хотя бы при одной реальной функции. Например, на ix64 регистр первого аргумента — RDI для Linux и RCX для Windows. Подробности
тут (для ясности ограничимся x86 во всех основных разрядностях).
Далее, я не могу себе представить полный исполняемый файл без системных вызовов (кому он такой нужен?) Если используются стандартные функции C вроде puts, то они вызовут write из libc в Linux, но WriteFile из user*.dll в Windows. Далее эти библиотечные функции сделают системные вызовы, но разные и по-разному. Если код будет использовать другие средства, то видимая разница уже будет в них.
Надеюсь, этого достаточно, чтобы начать копать дальше самому.