Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GAS bug 
:(
    Опции темы
MAKCim
Дата 19.1.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 3
Всего: 207



есть код следующего вида (не несет содержательной нагрузки, просто пример)
Код

/* main.S */

.macro SET i, j
    .if \i >= \j
        .exitm
    .endif
1:
    lcall    $\i * 8, $0
    movl    (%esp), %esp
    ret
    .ifndef COMMANDS_SIZE
        COMMANDS_SIZE = . - 1b
    .endif
    SET \i + 1, \j
.endm

.text
.globl main
main:
    SET 0 , 10

компилирую
Код

# gcc main.S -o main

hexedit-ом смотрю main
макрос SET разворачивается в
Цитата

i = 0:    9A 00 00 00 00 00 00 8B 24 24 C3
i = 1:    9A 00 00 00 00 08 00 8B 24 24 C3
i = 2:    9A 00 00 00 00 09 00 8B 24 24 C3
i = 3:    9A 00 00 00 00 0A 00 8B 24 24 C3
i = 4:    9A 00 00 00 00 0B 00 8B 24 24 C3
...

(9A <offset> <selector> - это lcall, 8B 24 24 - это movl, C3 - это ret)
т. е селектор в команде lcall должен быть последовательно
00 00
08 00
10 00
18 00
20 00
...
а в коде
00 00
08 00
09 00
0A 00
0B 00
если написать в строке
Цитата

lcall    $\i * 8, $0

вместо умножения +, -, / все работает и числа получаются правильными

Это сообщение отредактировал(а) MAKCim - 19.1.2007, 10:52


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bilbobagginz
Дата 19.1.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 28
Всего: 317



может глюк препроцессора ?


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
MAKCim
Дата 19.1.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 3
Всего: 207



ну я уж не знаю где конкретно глюк, но он точно есть  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.