|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 25, 2003 20:04:17 Не до конца понимаю процесс ассемблирования кода. В нете ничего толкового не нашел, может кто чего скажет умное или скажет чего прочесть? |
|
|
Дата: Дек 25, 2003 20:32:00 теорию компиляторов. |
|
|
Дата: Дек 25, 2003 20:36:03 В нете ничего толкового не нашел Если ты имеешь в виду процесс работы синтаксического анализатора, то ты не умеешь искать в сети. Ключевые слова: lex, yacc, byzon Из книг - самая лучшая - это книга Ульмана - Книга Дракона :) Потом есть еще одна по теории С++ компилеров... |
|
|
Дата: Дек 25, 2003 21:18:45 volodya Книга Дракона - библия компиляторов, но про ассемблирование там мало написано, да и практических данных там просто нет - одна сухая теория и ссылки на другие источники. EvilsInterrupt Тем не менее, книгу стоит почитать, даже несколько раз! |
|
|
Дата: Дек 25, 2003 21:26:47 Ребята спасибо обязон гляну и не один раз. Но я имел такого рода вопрос: код преобразуется в машинный код. смещения проставляются или нет? Что случается во время первого прохода, второго и так до m5, если я правильно понимаю? |
|
|
Дата: Дек 25, 2003 22:13:30 В masm есть ключ /Fl и директива .listall. Создается листинг, там кое-что можно посмотреть. Еще есть FASM, он совсем OpenSource. |
|
|
Дата: Дек 26, 2003 13:13:27 > Но я имел такого рода вопрос: код преобразуется в > машинный код. смещения проставляются или нет? Что > случается во время первого прохода, второго и так до > m5, если я правильно понимаю? Смещения компилятор не проставляет - это делает линкер. А несколько проходов нужно для оптимизации jump'ов - при первом проходе компилятор не знает куда будет сделан прыжок (например код на который ссылается еще не скомпилирован), поэтому все прыжки делаются длинными (near) а в последующих проходах компилер где можно заменяет их на короткие (short), ну и так крутится пока не надоест =) |
|
|
Дата: Дек 26, 2003 14:54:53 Dr.Golova и не только принимают от меня искреннюю благодарность!!! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.040 |