Russian Qt Forum
Ноябрь 23, 2024, 08:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Прелестно  (Прочитано 22180 раз)
OKTA
Гость
« Ответ #45 : Октябрь 02, 2014, 12:54 »

Что-то я читал, читал твой пример, _Bers и так и не понял, что ты хотел им показать. Я так понял, что как раз фишку, что передается адрес объекта?  Непонимающий
Записан
OKTA
Гость
« Ответ #46 : Октябрь 02, 2014, 21:31 »

up или че там говорят обычно?  Смеющийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #47 : Октябрь 05, 2014, 11:04 »

Ну так что, кто-нибудь что-либо скажет насчёт этого?
Единственное что могу сказать - сам делал практически так же  Улыбающийся

Др пример
Код:
ARGB CalcColor( void );

Это не работает если тело CalcColor в С (не cpp) файле. Когда ф-ция вызывается из cpp, она рассчитывает на
Код
C++ (Qt)
void CalcColor( ARGB & c );
и подает "с" как аргумент. Правда варнинг есть, что-то типа "inconsistent linkage" (точно не помню)

Непонятно удивление на 4 страницах Улыбающийся Самые начальные познания в ассемблере снимают все вопросы
Записан
Bepec
Гость
« Ответ #48 : Октябрь 05, 2014, 12:17 »

Тупо не преподавали этот материал, а на практике он не пригождается.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #49 : Октябрь 05, 2014, 13:36 »

Тупо не преподавали этот материал, а на практике он не пригождается.
Если человек не представляет во что это выливается в командах - ему на уши можно повесить любую лапшу (что нередко и делают на хабре, да и местные знатоки..)

Что-то я читал, читал твой пример, _Bers и так и не понял, что ты хотел им показать. Я так понял, что как раз фишку, что передается адрес объекта?  Непонимающий
Упрощенный пример
Код
C++ (Qt)
int DoSomething( float p0, float p1, int num );
Полагать что действительно на стек будет подаваться num, затем p1 и p2 - ну так думают тыкающие мальчики Улыбающийся Реально может быть что угодно, напр

num в регистре ecx
p0 и p1 в регистрах FP2 и FP3

Никакой подачи не стек не происходит, ф-ция просто скомпилирована так что рассчитывает на аргументы в этих регистрах. Теперь Вы берете адрес ф-ции и вызываете ее "как положено" - но она об этом ничего не знает
 
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #50 : Октябрь 05, 2014, 14:23 »

Для того, что бы таких заморочек не было, давным давно были приняты соглашения о вызовах с соответствующими директивами и все это расписывается в abi конкретной платформы.
Записан
Bepec
Гость
« Ответ #51 : Октябрь 05, 2014, 15:07 »

Замер производительности команд/функций вполне заменяет знание ассемблера, увы.
Записан
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.185 секунд. Запросов: 23.