Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как работает, допустим, int ? 
:(
    Опции темы
En_t_end
  Дата 20.2.2005, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Возникла идея создания собственного типа переменных. Но для этого нужно знать, как вообще работает тип переменной.
Я представляю себе это как совокупность правил по выделению памяти и только. Получается, чтобы создать свой тип переменной, надо просто перегрузить процесс выделения памяти для того же int ?


PM MAIL ICQ Skype GTalk Jabber   Вверх
Domestic Cat
Дата 20.2.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172



Это в асм. А создать свой тип данных на С++ можно за пять секунд - напиши класс или стракт.


--------------------

PM   Вверх
En_t_end
Дата 20.2.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Цитата
свой тип данных

нет, именно тип переменной...
Я так и предполагал... все операции с памятью для переменных делаются на асм'е.
ЗЫ перенесите тогда тему туда... плиз...
PM MAIL ICQ Skype GTalk Jabber   Вверх
IEZ
Дата 20.2.2005, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Интересно какой тип ты хочешь создать, и которого еще не создали?


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
chipset
Дата 20.2.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Проще всего это сделать класс и перегрузить операторы. Зачем ещё какая то возня? smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
bel_nikita
Дата 20.2.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Цитата
нет, именно тип переменной...
Я так и предполагал... все операции с памятью для переменных делаются на асм'е.
ЗЫ перенесите тогда тему туда... плиз...
Для этого вообще-то и предназначен С++, перегрузка операторов и все такое...


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Goryachev
Дата 23.2.2005, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 23.2.2005
Где: Израиль

Репутация: нет
Всего: нет



chipset
bel_nikita
Согласен
PM MAIL   Вверх
chipset
Дата 23.2.2005, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Модератор: перенесено в раздел Ассемблер по просьбе автора темы.

Это сообщение отредактировал(а) chipset - 23.2.2005, 03:44


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Chingachguk
Дата 23.2.2005, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



En_t_end

Возьмем, к примеру, создание длинного целого в языке Паскаль (DOS). Пусть это будет 96-битное целое без знака.

Определяем тип:

Код

type

t96Int: array[1..3] of longint; { 3x32=96 bits }


Определяем функции сложения и вычитания:

Код

{A+B-> Result}
Procedure Add96Int(var A,B,Result: t96Int)
 begin
    asm
        les di,A
        mov ax,es:[di]
        mov bx,es:[di+2]
        mov cx,es:[di+4]
        les di,B
        add ax,es:[di]
        adc bx,es:[di+2]
        adc cx,es:[di+4]
        les di,Result
        mov es:[di],ax
        mov es:[di+2],bx
        mov es:[di+4],cx
    end;
 end;


Теперь при записи Add96Int(Val1,Val2,Res); в переменную типа t96Int будет помещена сумма Val1+Val2.

Это процедурный метод. Однако те же самые команды сложения могут быть помещены непосредственно вместо вызова Add96Int (макрос).

В языке СИ такое сделать проще - надо поиграться с #define - суметь сделать в нем ассемблерные команды.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
En_t_end
Дата 1.3.2005, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Chingachguk 
То есть, как я понял, чтобы пользовать стандарты алгебраических преобразований, мне надо будет делать функции... хмм... хотя по сути оно и правильно.

Блин выдрать бы определение int из си и посмотреть, как все организованно( только вот откуда именно выдирать??).

Цитата
В языке СИ такое сделать проще - надо поиграться с #define - суметь сделать в нем ассемблерные команды.

Можешь привести пример, ну типа, как для паскаля? Странно, но про асм в дефайнах впервые слышу...
PM MAIL ICQ Skype GTalk Jabber   Вверх
AISIN
Дата 22.6.2005, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



Цитата(En_t_end @ 1.3.2005, 06:47)
Блин выдрать бы определение int из си и посмотреть, как все организованно( только вот откуда именно выдирать??).

int i=1, т.е.
mov word ptr[bp-2],1
push word ptr[bp-2]
Наверно так!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Nuzur
Дата 28.6.2005, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Я действительно стыкался с проекатами когда необходимо организовывать ИМЕННО новый тип переменной и ИМЕННО под асмом(для С++, кстати)
Это нежно для повышения быстродействия. Например я лично "создавал" типы размерности которых были раскатаны на несколько килобайт(тобиш sizeof дает несколько тысяч smile).

Что вы хотоите создать и для чего вам это нужно?
А то вопрос, если это так можно назвать поставлен очень АБСТРАКТНО. И получаеться действие без вектора.

2 AISIN Что то в этом духе, но это для int, а что вы сделает с постиеньким float?



--------------------
Never again...
PM MAIL   Вверх
AISIN
Дата 12.7.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



Nuzur Наверно float будет состоять из двух int.т.е. один int показывает число до запятой, а другой int после запятой! smile
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
vadims
Дата 12.7.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Ты не хочешь пояснить что именно за собственный тип переменных ты хочешь создать, для чего именно, что там особенного предполагается и тд.

Это сообщение отредактировал(а) vadims - 12.7.2005, 14:06


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Mayk
Дата 12.7.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(AISIN @ 12.7.2005, 11:23)
Nuzur Наверно float будет состоять из двух int.т.е. один int показывает число до запятой, а другой int после запятой!

Это не флоат, это скорее фиксед c 32 битами для целой части и 32 для дробной
Цитата(Nuzur @ 28.6.2005, 23:35)
2 AISIN Что то в этом духе, но это для int, а что вы сделает с постиеньким float?

Да почти то же самое.
float f=1;
Может быть переведён либо в fld1(ура оптимизации) или в
mov dword [bp-2], 0x3f800000
fld dword [bp-2]

Это сообщение отредактировал(а) Mayk - 12.7.2005, 13:18


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.