Цитата Сообщение от Error404 Посмотреть сообщение
С чего это? Пременную в любом ассемблере можно как явно положить в память по абсолютному адресу при помощи EQU, так и отдать на откуп линкеру на этапе сборки. В обоих случаях в исходнике обращение к ней идет по символическому имени. Или общая память это нечто отличающееся от обычной оперативной? Не понимаю.
Сейчас аргументы и переменные функций располагаются в общей памяти. И это не очень оптимально, так как одновременно memset и memcpy выполняться не могут. Логично разместить их аргументы и переменные в одной области памяти.

Но что бы рассчитать, какие переменные располагать вместе, надо построить дерево вызовов функций. И жестко определить адрес для каждой переменной. Возможно относительный адрес, то есть

memset_dest EQU variables_area + 100
memset_c EQU variables_area + 102
memcpy_dest EQU variables_area + 100
memcpy_src EQU variables_area + 102

То есть потребуется анализ всех исходников и переформирование OBJ файлов каждый раз. Либо свой линкер.