![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
ассемблер собирает код в несколько проходов.
на первом - препроцессор высчитывает все константы, и метки а на втором/третьем уже компилирует. т.е. выражения сразу высчитываются и уже их сумма зашивается в код. Если-же константа указана явно, то само-собой проверяется размер dd - а как иначе. Другими словами, этот плюс только в исходнике, а в программе уже сумма (в зависимости от выделенной ячейки)
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#12 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
для эксперимента, можно взять дизассемблер "W32Dasm" и открыть в нём любую/увесистую программу. Он как-раз проводит обратные операции перед отображением кода, и тоже в несколько проходов.
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#13 |
Регистрация: 30.05.2019
Сообщений: 8
|
![]()
А в случае с выражениями, ассемблер вычисляет их и всегда, если это возможно, подгоняет под нужный размер?
|
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,828
|
![]()
А давайте подумаем - вот вы сказали зарезервировать 1+2 байт. Компилятор не вычисляет и ... Собственно, что и? Сколько памяти выделять то?
|
![]() |
![]() |
![]() |
#15 |
Регистрация: 30.05.2019
Сообщений: 8
|
![]() |
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,828
|
![]()
Вы спросили - всегда ли компилятор вычисляет?
Я говорю - предположим нет и вы пишите a db 1+2 сколько памяти выделять то? |
![]() |
![]() |
![]() |
#17 |
Регистрация: 30.05.2019
Сообщений: 8
|
![]()
Ну в таком случае непонятно, сколько выделять. Понятно, что выражения всегда вычисляются. Мой вопрос в том, что происходит после вычисления, а именно в случае, если результат превышает указанный размер.
|
![]() |
![]() |
![]() |
#18 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,828
|
![]() |
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 05.09.2016
Сообщений: 135
|
![]()
Mauko "assembler"
Немного о GoAsm.
|
![]() |
![]() |
![]() |
#20 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Nif-naf,
поставь ты себе виртуальную клавиатуру. За это время, неужели, на клавиатуру с кириллической раскладкой не насобирал? Или пиши "украинскими" буквами, тогда только буквы Э и Ы пострадают |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определите и запишите в протокол шестнадцатеричный объектный код для следующих директив резервирования памяти | nelo_001 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 28.06.2014 00:30 |
Директивы компилятора | Alex2009 | Общие вопросы Delphi | 2 | 30.01.2014 06:10 |
Директивы | ImmortalAlexSan | Общие вопросы Delphi | 4 | 07.11.2010 15:25 |
Директивы. | VintProg | Свободное общение | 3 | 10.11.2009 14:35 |
Директивы препроцессора в С++ | alef | Общие вопросы C/C++ | 1 | 25.04.2008 01:36 |