8.2. Искажение имен

Компиляторы Microsoft С (а также многие компиляторы в UNIX, как мы узна­ем далее) изменяют названия процедур, чтобы отразить используемый способ пе­редачи параметров. Так, к названиям всех процедур, применяющих С-конвенцию, добавляется символ подчеркивания. То есть, если в С-программе записано

some_proc(); то реально компилятор пишет call _some_proc

и это означает: если процедура написана на ассемблере, она должна называться именно _some_proc (или использовать сложную форму записи директивы ргос).

Названия процедур, использующих STDCALL, как можно было видеть из при­мера DLL-программы в разделе 7.4, искажаются еще более сложным образом: спе­реди к названию процедуры добавляется символ подчеркивания, а сзади - сим­вол @ и размер области стека в байтах, которую занимают параметры (то есть число, стоящее после команды     в конце процедуры).

some_proc(a:word);

превращается в

push a

call _some_proc@4