Использую компилятор от MS (ml.exe) Компилирую через ml.exe /c /coff /nologo /Zi /Fo data.obj data.asm Необходимо задать для функций не только сегмент, но и последовательность. К примеру на Си это задавалось через директиву Код (Text): #pragma code_seg(push, ".text$aaa1") функция 1 #pragma code_seg(pop) #pragma code_seg(push, ".text$aaa2") функция 2 #pragma code_seg(pop) #pragma code_seg(push, ".text$aaa3") функция 3 #pragma code_seg(pop) А как такое задать на ASM ? К примеру можно задать что-то типа Код (Text): names segment код names ends но важно именно задание последовательности. т.к. потом полученный obj будет цепляться к Си программе и функции из него должны будут идти в строгой последовательности с сишными функциями.
Код (Text): nameseg1 segment nameproc1 proc public nameproc1 enp nameseg1 ends и так далее заменяя 1 на следующую цифирь
Rockphorr, это не подходит. Потому что не получится указать что-то типа .text$aaa3 segment код .text$aaa3 ends т.к. в последствии требуется чтобы при креплении данного obj файла к Си программе, код его находился после определенной функции
slesh может ваши нужно указывать не в имени а в классе сегмента ???? Код (Text): text segment para public "текст$ааа" кататак - надо смотреть чему эквивалентна .text
Всё решено. Надо было лучше MSDN читать ) Код (Text): .686 .model flat,c code SEGMENT ALIAS('.text$aaa3') 'code' myproc proc public // код myproc endp code ends end
В принципе то всё пашет как надо, но вот почему-то под под x64 такое не катит. ml64 вообще отказывается принимать слово SEGMENT