Я пытаюсь изучить язык ассемблера, и мне нужно разъяснить что-то. Пожалуйста, поправьте меня, если я ошибаюсь в этом, потому что я мало знаю о сборке.
Все обучающие программы, которые я смотрю, имеют переменные программ сборки, назначенные для адреса памяти, такого как 0x0000
, и я могу понять, что вы должны вручную назначать адреса памяти в сборке, но как вы знаете, какой адрес использовать?
Очевидно, что имеет смысл начать с наименьшего адреса памяти, но что, если назначаемая переменная больше, чем память, доступная в 0x0000
? Переместит ли переменная на 0x0001
или 0x0002
? Если бы это произошло, это не помешало бы другим переменным назначать пробелы с одинаковой нумерацией (или вы не должны назначать их близкими)?
Если у меня есть две программы, написанные в процессе сборки одновременно (в современной ОС), и я использовал одни и те же адреса памяти в обеих программах, будет ли одна программа конфликтующей с другой, или же ОС просто назначит доступную адрес памяти независимо от того, что было написано в программе?
Любая информация по этому вопросу оценена.