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

User Tag List

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

Тема: LLVM Backend для Z80

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

    По умолчанию

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

  2. #52
    Master
    Регистрация
    27.01.2005
    Сообщений
    895
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    142 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

    По умолчанию

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

  4. #54
    Master
    Регистрация
    27.01.2005
    Сообщений
    895
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    142 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #55
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    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 битной арифметики. Пока из нового все.

  6. #56
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

    По умолчанию

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

  8. #58
    Master
    Регистрация
    27.01.2005
    Сообщений
    895
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    142 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    По умолчанию

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

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

  10. #60
    Master
    Регистрация
    27.01.2005
    Сообщений
    895
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    142 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

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

Ваши права

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