LINUX.ORG.RU

Директива .equ (gas)


0

0

Задавал уже этот вопрос на opennet, но ответа так и не дождался:

Почему не работает такая штука:

.equ pmsg, 4(%ebp);

В ДОС'овском, если мне не изменяет память, можно было так делать.

Просто, понимаете, если писать процедуру stdcall, то внутри текст будет нечитабельным даже для того, кто писал. Ибо вместо красивых

movl pmsg, %eax;

надо будет везде писать

movl 4(%ebp), %eax;

Я сума сойду. Подскажите какое-нибудь средство для таких вещей.

anonymous

.equ определяет символ(symbol), а это есть именованная константа. А в случае когда используется base pointer adressing тут константами и не пахнет. Крепитесь короче.

SatanClaus ★★★
()
Ответ на: комментарий от SatanClaus

SatanClaus, про это я-то догодался. Я хотел узнать, какими средствами можно добиться того, что я показал.

erDiZz, спасибо за немек. Если не найду gas'овских средств, воспользуюсь советом.

balodja ★★★
()
Ответ на: комментарий от byteworm

>А разве в GAS отсутствуют макросы?!

Макросы то есть, только использовать их в таком случае довольно заковыристо, ибо непонятно как подсчитать адрес в определенный момент времени. Что в него подставлять то?

Наверное сишный препроцессор поможет, но както неготично;)

SatanClaus ★★★
()
Ответ на: комментарий от byteworm

>ничего подставлять не надо! пишешь pmsg а макрос подставит 4(%ebp)

Хм, а примерчик можно, я такого если честно не встречал. Нахожусь в недоумении.

SatanClaus ★★★
()
Ответ на: комментарий от byteworm

>что-то вроде pmsg macro 4(%ebp) endm или так нельзя?

Нет.

.macro параметр=значение по дефаулту, ...

бла бла бла \параметр бла бла бла

.endm

SatanClaus ★★★
()

>Ибо вместо красивых movl pmsg, %eax;

Я вот ничего красивого тут не вижу, хотя на любителя конечно, но если всетаки читать чужой ассемблер, то лучше уж без таких двусмысленностей.IMHO

SatanClaus ★★★
()
Ответ на: комментарий от SatanClaus

действительно, сглупил что-то я :(
у as есть еще параметр --defsym SYM=VAL, может он подойдет?
p.s. я сам никогда с gas не работал, так что я только предполагаю :)

byteworm
()
Ответ на: комментарий от byteworm

>еще параметр --defsym SYM=VAL

Тоже мимо. Это как .equ в начале файла.

SatanClaus ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.