Народ доброго времени суток! Я новичок в низкоуровневом программировании и вопрос скорее всего о кроссплатформенности. Сейчас как вы знаете идет гонка между Intel и AMD. AMD выпустил совсем недавно новую модель линейки Ryzen и вопрос такой, будет ли работать код написанный на Intel I5 (ml.exe/ml64.exe) MASM на том же новом Ryzen? Или нужно изучать документацию новых процессоров и писать код конкретно под них?
Если не затрагивать proprietary extensions (инструкции специфичны эксклюзивно Intel или AMD, типа AMD 3DNow! - о других даже не знаю), то код должен быть совместим, так как оба процессора поддерживают ISA (Instruction Set Architecture) x86 и x86-64. Разница будет не в функциональности, а производительности и эффективности: на сколько и как кэшируется память, взаимодействия логических процессоров (hyper-threading, SMP, etc) и прочее.
mr.en3mY, Так как вы не сможите использовать новыые инструкции, например анклавы, то совместимость останется. Все новые инструкции нужны для очень специфических задач и обычно не используются. > идет гонка между Intel и AMD Спецификацию разработала Intel, amd лишь под неё подстраивается. Именно поэтому мы читаем маны Intel, а не amd.
Вы имеете ввиду не смогу писать и запустить на I5? Но я ведь могу написать на i5 на масме для Ryzen со специфическими возможностями и теми же анклавами? Имею ввиду смогу ли я на масме это сделать?
mr.en3mY, Масм даже не поддерживает набор новых инструкций. Так что можите не волноваться на счёт совместимости.
А зачем они вам ? Вам хватит стандартного набора на очень долго.. Новые инструкции поддерживают обновляющиеся компили, это макро определения. Вот например: VRCP28PD—Approximation to the Reciprocal of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error Кому это нужно ?
Ну вообще новые инструкции много где используются. Просто Indy_ утирует - имея ввиду, что пока у вас не стоит конкретной задачи - конкретно сейчас можете не волноваться на счет их поддержки масмом или совместимости какой. Ну например? вы начали кодить свой гиппервизор. Если вы начали делать гипервизор - то у вас бы не было вопросов новичка. И вы бы, почитав мануалы интела и амд, увидели бы что - у них совершенно разные инструкции для построения гипервизора. И на амд у вас бы был свой код, а на интел свой.
TermoSINteZ, У тс уйдут года на изучение стандартного набора, так как он не знает как инструкцию задефейнить как макро в масм. Думаю вопрос общий, тс начал юзать асм и появился вопрос совместимости.
А мне лично показалось, что ничего он не начал изучать, а просто вопрос из серии "поболтать ни о чем". Обычно новички задают более конкретные и насущные вопросы из серии - "не могу скомпилировать то-то и то-то".
TermoSINteZ, Незачем гадать, просто спросим. mr.en3mY, Повторите вопрос развёрнуто и опишите что вы знаете.
Знаю я действительно мало пока что. Indy вы правы вопрос был больше о совместимости. Но как я вас понял в принципе. Единственное что меня озадачило это то если я учу и работаю с синтаксисом Масма то как же работать с новейшими функциями, я пока про кодирование и define не много знаю.
Скорее всего так и будет со временем, но пока что конкретных вопросов нет, т.к. я занимаюсь по Крупнику и некоторым видео материалам. Скажем так пока все идет гладко.
Ну тогда просто не заморачивайтесь. Изучайте базы, по книгам \ статьям и тп. Обычно ставят цель и программируют - изучают инструкции и прочее. А без цели изучать - скучно и без толку.
Сначала изучаете базовый набор инструкций (совместимых между всеми процессорами от AMD и Intel) и как ими пользоваться, потом уже приступаете к изучению и использованию специфичных (расширений). К тому моменту уже не возникнет вопроса о том, как использовать ту или иную инструкцию, будет ли она совместимой, и присутствует ли в вашем инструментарии (masm). Возможно, в будущем придётся даже отказаться от текущего инструментария (masm) в пользу другого (fasm, yasm, и т.д.).