Важная информация

User Tag List

Страница 6 из 12 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 112

Тема: LLVM Backend для Z80

  1. #51
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Благодарностей: 66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Ну уж нет! стандартный float тоже надо. а libm - портируется...
    Стандартный float сделать можно, но для этих целей нужно будет делать библиотеку уже. Честно говоря я не силен в работе с типом float и хороших быстрых функций наваять сам не смогу, поэтому если у кого-то есть готовые библиотеки для работы с float, то буду очень этому рад. Хм.. что за libm?
    Последний раз редактировалось EARL; 02.11.2012 в 18:02.

  2. #52
    Master
    Регистрация
    27.01.2005
    Сообщений
    649
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EARL Посмотреть сообщение
    Стандартный float сделать можно, но для этих целей нужно будет делать библиотеку уже. Честно говоря я не силен в работе с типом float и хороших быстрых функций наваять сам не смогу, поэтому если у кого-то есть готовые библиотеки для работы с float, то буду очень этому рад. Хм.. что за libm?
    Сам C поддерживает только + - * / для флоата. Остальное - внешнаяя библиотека libm.

    Сделаешь эти 4 функции (пусть не оптимально пока что) - и хватит. Главное, чтобы флоат - был Сшним флоатом по стандарту, а не каким-то извратом.

    Та сейчас на оптимизации не морочься - главное функционал. Пока функционала нет - и оптимизировать нечего.

  3. Этот пользователь поблагодарил SfS за это полезное сообщение:
    perestoronin (26.12.2012)

  4. #53
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Благодарностей: 66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SfS, я думаю все операции с float все равно лучше делать в виде отдельной библиотеки. А на счет формата float, то в любом случае это будет IEEE 754, т.е. как раз стандартный, а не то что используется в бейсике.

  5. #54
    Master
    Регистрация
    27.01.2005
    Сообщений
    649
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EARL Посмотреть сообщение
    SfS, я думаю все операции с float все равно лучше делать в виде отдельной библиотеки. А на счет формата float, то в любом случае это будет IEEE 754, т.е. как раз стандартный, а не то что используется в бейсике.
    ну как оно внутри будет - неважно) а вот IEEE 754 - это руль)

  6. #55
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Благодарностей: 66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На данный момент уже могут компилироваться многие программы работающие с 8 битной арифметикой. Имеются некоторые недоделки в плане условий (if). Для примера приведу код вычисления crc8:
    Код:
    unsigned char test(unsigned char *a, unsigned char size)
    {
    	unsigned char crc = 0xFF;
    	unsigned char i;
    
    	while (size--)
    	{
    		crc ^= *a++;
    		for (i = 0; i < 8; i++)
    			crc = crc & 0x80 ? (crc<<1) ^ 0x31 : crc<<1;
    	}
    	return crc;
    }
    А вот что мы получаем на выходе (входные данные передаются через HL - указатель на массив, A - длина массива):
    Код:
    ; BB#0:                                 ; %entry
    	ld	b, a
    	ld	c, -1
    	jp	.BB0_3
    .BB0_2:                                 ; %while.cond.loopexit
                                            ;   in Loop: Header=BB0_3 Depth=1
    	inc	hl
    .BB0_3:                                 ; %while.cond.loopexit
                                            ; =>This Loop Header: Depth=1
                                            ;     Child Loop BB0_5 Depth 2
    	ld	a, b
    	cp	0
    	jp	z, .BB0_1
    ; BB#4:                                 ; %while.body
                                            ;   in Loop: Header=BB0_3 Depth=1
    	ld	a, (hl)
    	xor	c
    	ld	e, a
    	ld	d, 0
    	dec	b
    .BB0_5:                                 ; %for.body
                                            ;   Parent Loop BB0_3 Depth=1
                                            ; =>  This Inner Loop Header: Depth=2
    	ld	a, e
    	and	-128
    	ld	hx, a
    	sla	e
    	ld	a, e
    	xor	49
    	ld	c, a
    	ld	a, hx
    	cp	0
    	jp	nz, .BB0_7
    ; BB#6:                                 ; %for.body
                                            ;   in Loop: Header=BB0_5 Depth=2
    	ld	c, e
    .BB0_7:                                 ; %for.body
                                            ;   in Loop: Header=BB0_5 Depth=2
    	inc	d
    	ld	a, d
    	cp	8
    	ld	e, c
    	jp	z, .BB0_2
    	jp	.BB0_5
    .BB0_1:                                 ; %while.end
    	ld	a, c
    	ret
    Конечно не всё идеально, но crc8 вычисляется правильно. Если у кого-то есть свои примеры и интересно во что они скомпилируются, кидайте, покажу. Но замечу еще раз, что пока работа полностью реализована только для 8 битной арифметики, т.е. int пока в вычислениях использовать не получится. В ближайшее время займусь как раз реализацией 16 битной арифметики. Пока из нового все.

  7. Эти 8 пользователя(ей) поблагодарили EARL за это полезное сообщение:
    Andrew771 (09.11.2012), Eltaron (09.11.2012), Error404 (09.11.2012), mastermind (09.11.2012), Oleg N. Cher (10.11.2012), perestoronin (25.11.2012), Protom (09.11.2012), Valen (09.11.2012)

  8. #56
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    818
    Благодарностей: 655
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересный проект.
    Интересно как будет выглядеть декодер mp3 в Z80 асме ).

    P.S. а х86 фронт-энд вы случайно не планируете сделать ) ?

  9. #57
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Благодарностей: 66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    shurik-ua, front-end'ов для llvm существует уже не мало. Начиная от clang или gcc+DragonEgg заканчивая Lua.

  10. #58
    Master
    Регистрация
    27.01.2005
    Сообщений
    649
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уже результат. Таки инты надо)

  11. #59
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Благодарностей: 66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока нет времени решил приостановить ненадолго проект. После выхода LLVM 3.2 планирую продолжить работу перейдя на новую ветку.

    PS По данным с офф. сайта дата релиза LLVM 3.2 планируется 16 декабря.

  12. Этот пользователь поблагодарил EARL за это полезное сообщение:
    perestoronin (26.12.2012)

  13. #60
    Master
    Регистрация
    27.01.2005
    Сообщений
    649
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EARL Посмотреть сообщение
    Пока нет времени решил приостановить ненадолго проект. После выхода LLVM 3.2 планирую продолжить работу перейдя на новую ветку.

    PS По данным с офф. сайта дата релиза LLVM 3.2 планируется 16 декабря.
    хорошо. до января отложил?

Страница 6 из 12 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •