Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
|
|
1 | |
Обязателен ли выход из подпрограммы23.01.2011, 22:06. Показов 1044. Ответов 4
Метки нет (Все метки)
В постижении ассемблера MASM32 WINDOWS XP дорос до создания подпрограмм. И столкнулся с сомнением берущим своё начало из ассемблера под ДОС. С которого имел неосторожность начать изучение ассемблера вообще. Сомнение следующего толка.
В ассемблере под ДОС в случае выполнения ПП и прочих движух со стеком настоятельно рекомендовалось перед выходом из программы выровнять стек во избежании ибо! Но насколько я понял из хвалебных од к ассемблеру под винду в случае если прога вдруг внезапно окуклится со своим кривым стеком, то в глобальном масштабе на стабильность системы это не повлияет. А если быть конкретнее, то у моей программы есть подпрограмма, в результате работы которой может возникнуть ситуация при которой дальнейшее выполнение необязательно, ненужно и т.п. Нужно ли мне при этом париться со стеком (удаление (выравнивание) адресов возврата из пп) или вполне допустимо что программа будет ломиться на выход непосредственно из подпрограммы не церемонясь со стеком?
0
|
23.01.2011, 22:06 | |
Ответы с готовыми решениями:
4
Выход из подпрограммы К чему приводит выход из подпрограммы командами LJMP, SJMP и т.д? Обязателен ли отдельный IP Деструктор не обязателен? |
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
||||||
23.01.2011, 23:24 | 2 | |||||
Полный 30h, в досе тоже можно завершить работу программы с невыровненным стеком, например
2
|
Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
|
|
24.01.2011, 00:40 [ТС] | 3 |
Спасибо. Буду выравнивать.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
24.01.2011, 15:47 | 5 |
Да. Но писать всё равно надо правильно, так как не закрытая подпрограмма = крах конкретной программы. И закрытая косо - тоже. И, наоборот, если под DOSом, не дожидаясь завершения подпрограммы и выравнивания стека, давануть reset, то ничего страшного. В винде же любое, даже кривое закрытие проги=reset именно её памяти, не трогая остальные софтины и саму ось.
0
|
24.01.2011, 15:47 | |
24.01.2011, 15:47 | |
Помогаю со студенческими работами здесь
5
Обязателен ли GUI приложению? Обязателен-ли кулер на видеокарте [C] Обязателен ли вызов listen() после bind()? Как в Delphi написать типа Paint ?? спектр цветов обязателен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |