Начальная сборка - PullRequest
       18

Начальная сборка

0 голосов
/ 17 ноября 2009

Я новичок в ассемблере и хотел бы выучить. У меня Vista-64 (будет обновлена ​​до Windows 7 64), и я скоро переустановлю 32-битный Linux, но я закончу программировать на обеих системах, возможно, используя NASM. Мне было интересно, будут ли 32-битные программы сборки компилироваться и запускаться в моей системе. Если нет, каковы основные различия и ограничения и где я могу научиться программировать в 64-битной системе?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2009

NASM не поддерживает 64-битную версию (или подождите, это поддержка, которую он недавно добавил?). Я рекомендую YASM, он очень похож на NASM, но он более активен и, я думаю, поддерживает больше платформ.

64-битное программирование на ассемблере весьма отличается от 32-битного (если вы говорите на x86). Все обращения к памяти теперь относятся к RIP, а не являются абсолютными (без специальных переопределений). Я бы рекомендовал сначала изучить 32-битное программирование, потому что для этого есть больше документации. Я не рекомендую изучать оба одновременно!

Кроме того, я думаю, что использовать Linux было бы проще, так как легче взаимодействовать со стандартной библиотекой C (если вы не хотите быть человеком и делать системные вызовы).

Кроме того, в 64-битных системах соглашение о вызовах отличается для windows и linux на 64-битных машинах. Это то, что вы должны наблюдать при взаимодействии с существующими библиотеками.

EDIT: О, да, 64-битная Vista будет нормально запускать 32-битные программы (iirc вы можете обнаружить, что вы находитесь в 32-битном режиме из 64-битной ОС). Я настоятельно рекомендую просто разрабатывать 32-разрядные версии для Linux и Vista, поскольку они имеют одинаковые соглашения о вызовах (iirc), поэтому любой код, который вы используете для взаимодействия с библиотеками C, может быть большей частью независимым от платформы

0 голосов
/ 17 ноября 2009

Они должны работать, но помните, что обычно ассемблерный код зависит от платформы, поэтому ассемблерный код, написанный для Linux, вероятно, не будет собран в Windows.

0 голосов
/ 17 ноября 2009

64-битная перспектива будет нормально работать с 32-битными исполняемыми файлами

...