![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |||||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Пытаюсь создать свой собственный объект. Объект очень простой. Под него только выделяется память и записывается в первые четвре байта класс. Не спрашивайте зачем. Просто, маюсь вигней, заодно тренеруюсь на basm'е. И вот че увидел и не могу понять.
Есть код: Код:
Цитата:
Цитата:
Но зачем Цитата:
А вот это вообще меня убило Цитата:
Пришлось сделать так Код:
Цитата:
Я asm совсем недавно начал изучать. В чем особеность такой компиляции. Ведь я ему уже дал готовый код на ассемблере. Зачем он его так, на мой взгляд не логично, исправил? Последний раз редактировалось Sibedir; 31.01.2011 в 09:06. |
|||||
![]() |
![]() |
![]() |
#2 | |||
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]() Цитата:
Код:
Цитата:
Код:
Цитата:
Код:
Да, и если хотите совсем уж всё держать под контролем, то функцию можно объявить так: Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 31.01.2011 в 07:22. |
|||
![]() |
![]() |
![]() |
#3 | |||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Цитата:
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|||
![]() |
![]() |
![]() |
#4 | |||||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
С dword понял. Он ведь его не в регистр, а в пямять загоняет. Потому и не знает размер. Спасибо.
Остальное поведение компилятора остается за гранью моего понимания. Цитата:
Цитата:
Код:
Особо прошу обратить ваше внимание на тот факт, что edx в теле обсуждаемой процедуры никак не определено. Тоесть вообще никак. Код:
Цитата:
Цитата:
... И действительно, ни чего не поменялось (Delphi 7). Цитата:
Код:
Последний раз редактировалось Sibedir; 31.01.2011 в 08:56. |
|||||
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
#6 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Еще раз спасибо. Вкупаюсь потихоньку.
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Ну да, assembler; можно не указывать, старая привычка. Главное, начинать код с asm, а не begin.
Цитата:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
![]() |
![]() |
![]() |
#8 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Ага, ага. Я всё записываю.
![]() Ну я, короче, понял уже. Во время begin компилятор решил, что result'ом будет edx. Я это благополучно проигнорировал и в итоге получил "странную" строчку. Слушайте, а зачем после ret Цитата:
Цитата:
Последний раз редактировалось Sibedir; 31.01.2011 в 11:57. |
||
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
да, это так называемый align, чтобы следующая после него команда следовала с нужного адреса (выравненого по двойному слову, например). два nop не так круто, вот создатели компиляторов и изголяются. Возможно, два nop как-то хуже влияют на предвыборку, чем одна команда mov, не знаю.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Странное поведение realloc | eraserhp | Общие вопросы C/C++ | 7 | 17.05.2010 09:52 |
Странное поведение realloc | eraserhp | Помощь студентам | 0 | 15.05.2010 18:06 |
Странное поведение gets | alex_alpha | Общие вопросы C/C++ | 3 | 27.03.2010 18:21 |
Странное поведение null | Vitalyk | JavaScript, Ajax | 6 | 13.02.2010 15:22 |