инициализация стека

Тема в разделе "WASM.ASSEMBLER", создана пользователем 0136, 5 авг 2007.

  1. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    Ребят привет, слушайте тему, чё то недавно обкурился %) решил написать ос! (это было ещё зимой). Смотрю на другие загрузчики, смотрю (из тех что мне попадались) пишут:
    ; trali vali
    ....
    ; initializeywen stack
    cli ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! kak po mne etogo ne nada
    mov ss, ax
    mov sp, gora
    sti ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! i etogo to*e !

    вообщем, я знаю, где то я читал, что процы, покрайне мере фирмы Intel (а все другие фирмы второсортного поколения с них шкрябают основу) при загрузке сег. рега стека (mov ss, daun) проц запрещает апаратные и немаскируемые прер-ния, на время ,выполнению след. команды.

    Какие априории вы мне скажете по этому поводу - дорогие друзья ? %)
     
  2. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    0136
    Ну, а вот если мы еще раз хорошенько вдунем и подумаем, что будет если некое прерывание навестит нас между командами "mov ss, ax", "mov sp, gora" и его обработчик потрогает что-то в текущем стеке(например, сохранит там любое значение), что будет?
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    mathio
    Ничего не будет. Прерывание не будет доставлено.

    0136
    Я такое тоже встречал, кажется в загрузчиках от MS. Может, просто от незнания воткнули?
     
  4. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    я тоже думаю - от не знания - что в который раз доказывает - знание сила ! которая в вышепривидённом случае даёт нам 2 байта%))
     
  5. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    от незнания! Кто то ещё что то скажет? %)
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    n0name
    Ухты, красота какая. Это откуда? Ну уж-то мануалы.
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    вестимо откуда, мануалы интеловские.
     
  9. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Очень даже будет :)
    А мануал вы не тот процитировали, жаль на 8086 счас мана уже не найти :)
    Блокировка прерываний на одну инструкцию после записи в ss появилась начиная с 80286.
    На 8086 и 80186 очень даже может всё упасть.
    Так что не от незнания, а для универсальности ;)
     
  10. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    итак, при старте системы все прерывания отключены и есчё один "cli" просто не нужен. Потом без прерываний переставляется стёк на нужную позицию и ставится "sti". Не нужно так сильно заострять внимание на экономию нескольких байт за счёт совместимости, ведь не факт, что, допустим, амд не провмыкает эту возможность(свойство).
     
  11. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Вообще-то, как можно убедиться, прерывания включены, и cli может понадобиться. Убедиться в этом можно, в загрузчике написав jmp $ и увидеть, что во время исполнения этого кода будет переключаться NumLock, а также по таймеру погаснет светодиод на FD.
     
  12. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    Ребята, если вы мне покажите парнишку, который, сидит хотя бы за 286 %)) тому я дам 5 баксов, ну а если ещё скажите что это девочка %)) тогда все 20 :))) + конфетка ;)))
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Ща нарою в универе, есть там такой комп и девочку из ландшафтной архитектуры для позирования пригласим :)
    С вас денежка ...
     
  14. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    незабывай, и конфетка, скинешь фотку ;) 0136@ukr.net %)) это будет всык %))
     
  15. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Дык вопрос не в том.
    А ты гарантировать можеш что твой загрузчик на 80186 никто запускать не будет?
    А если будет - дык просто повиснет всё.
    Лично я cli/sti делал+детект типа CPU, а потом уже собственно загрузка с использованием 32-битных регистров и т.д.
    Зато если всунуть дискету с ним даже в комп на 8086 - просто напишет "Not i386" подождёт нажатия на кнопку и ребутнется.
    Зависать без каких-либо сообщений не есть гуд.
    А во вторых 8086 очень даже найти можно - не в дэсктопах конечно, но во многих устройствах используется - не греется и жрёт мало.
     
  16. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    я об этой блокировке читал в книжке как раз по 8086 (точнее к1810вм86)
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Я не знаю что это за чип (советский аналог вроди??), но если надо надо интеловскую доку могу зацитировать:

     
  18. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    - соль жизни :)
     
  19. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ну дык :)
    Я никого не агитирую, просто я больше за универсальность, чем за экономию.
    Тем более что в данном случае 2 байта ничего не решают.
     
  20. renych

    renych New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2007
    Сообщения:
    13
    Я реально имею знакомого, у которого дома комп IBM 286, с хардом на 20 метров.
    Причём этот комп у него единственный, и постоянно используется (он на нём в игры играется типа civ первая)
    чуваку 24 года. живёт в столице )))