Отговори на тема  [ 32 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща
Транслатор от високо ниво към ASM за контролери :) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Всъщност идеята е добра, ако и да не е пряко практична.
Компилатори има достатъчно - но да напишеш нещо, което не си
писал досега е друга работа, добиваш знания и опит, които си нямал
и инак няма откъде да получиш.
Така че ако ти е интересно и можеш да отделиш време давай смело, пък като
имаш нещо покажи резултатите. Цял живот съм действал така, бил съм и богат,
и беден, и в крайна сметка и в много враждебна среда съм успявал да
намеря някого да иска да ми плати за да направя нещо, което другите
не могат.
А ако ще вампирясваш и погваш някого - в случая Никола де - свиркай да
идваме да гледаме :D :D :D .

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Нед Юли 20, 2008 2:48 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Чет Ное 02, 2006 1:13 am
Мнения: 88
Мнение 
Време нямам излишно. Нито имам кой да ме издържа, или да ми плаща да си пиша неща за кеф. Говорех хипотетично и ей така, лаф да става. Понякога ми се приисква, но само си говоря.


Нед Юли 20, 2008 8:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Минаха времената, когато ни плащаха, за да правим, каквото ни е интересно.
Сега правим каквото иска клиента, и само за колкото си плаща.
И мен понякога ме сърбят ръцете, но времето все не стига ..... :cry:


Пон Юли 21, 2008 1:00 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Ами всъщност на мене никога някой не ми е плащал, за да правя това, което аз съм
искал. Успявал съм да продам продукти, които съм правил и са ми били интересни,
след като съм ги имал направени, правенето си е било на мои разноски и риск.

Ако на човек наистина нещо му е интересно и иска да го направи,
намира време - никой не работи 100% от времето си, за да се прехранва.

Инак животът ще си мине в чакане на момента, в който да стане интересно... Това
е съдбата на повечето (почти всички?) хора, разбира се, и алтернативата е трудна.

Обикновено човек знае силите си и се захваща с неща, които вижда как ще докара
до край.

В случая един написан компилатор би бил бая добавка към биографията на всеки
от форума - ако човек наистина го направи, де - и вероятно би се изплатил в дългосрочен
план.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пон Юли 21, 2008 3:08 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
tgi написа:
.........
Ако на човек наистина нещо му е интересно и иска да го направи,
намира време - никой не работи 100% от времето си, за да се прехранва.

Инак животът ще си мине в чакане на момента, в който да стане интересно... Това
е съдбата на повечето (почти всички?) хора, разбира се, и алтернативата е трудна.
..........

Прав си, разбира се, но някои идеи си искат и времето и ресурсите, които не винаги можеш да намериш просто така, между другото...
Пък и с годините човек почва да се изморява :cry: :cry: :cry:


Вто Юли 22, 2008 12:50 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
Струва ми се много хора се подведоха по заглавието на темата или по собственото си тълкуване на заглавието. А в "Безумни идеи" совите не са това което са.
Според мен на solenoid-a му трябва оптимизатор не транслатор. Но ако на някой не му харесва какво е надробил компилатора има и други начини за измъкване. Например inline assembler. На мен рядко ми се налага да пиша на асемблер и в тези редки случаи обикновенно това е част от код, който трябва да се интегрира в останалата част от С сорса. В много от случаите една добре обмислена inline функция вътре в тялото на която се ползва inline assembler върши точната работа. Разбира се всичко зависи от случая, възможностите на компилатора и възможностите на програмиста.
От колеги заклети екстремисти писачи на асемблер съм чувал, че ползват макроси. Правят си един вид собствен език от по-високо ниво. Без да им се налага да пишат собствени развойни средства. Щото то хубаво, че ще се сблъскаш с нови неща, когато седнеш да пишеш компилатор, ама най-добре е ако навреме разбереш дали възможностите ти в момента са достатъчни да бъдеш писач на компилатори или не. Например кофеиновата диета може да не ти понесе добре.

_________________
Най-опасният враг на истината и свободата е мнозинството.


Вто Юли 22, 2008 10:45 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Юли 29, 2007 2:41 pm
Мнения: 610
Мнение 
А бе вие ще се хванете ли да пишете или само ще ми късате нервите? :twisted:
Те хората ако мислеха колкото вас нямаше да има грам GNU Software.

---------------------------
И не плачете колко е трудно, нали е за шоуто...
Пак се сетих как писах DOS за Правчо8 в 16 битовата ера. Направо хвърчеше - всички драйвъри бяха пренаписани на най-елементарно ниво. Хардуерът се използваше до дупка. Дори бях измислил и интерфейса - нещо като GUI ама без истинска графика, максимално любезен. Е, за самият интерфейс щеше да ми трябва далеч повече време ама не над 6 месеца.
И после ме подгони службата, после гладът, после излезе Windows и всички днес си патим заради няк'ви си 6 месеца :lol:

_________________
Тя простотията по хората ходи


Вто Юли 22, 2008 10:11 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Чет Ное 02, 2006 1:13 am
Мнения: 88
Мнение 
bongo-bongo написа:
А бе вие ще се хванете ли да пишете или само ще ми късате нервите? :twisted:
Те хората ако мислеха колкото вас нямаше да има грам GNU Software.


Захванах го днеска следобяда, и му нахвърлях един прост парсер / токенайзер.

Това е кода на импровизираното С
Код:
Processor = PIC16F84
Oscillator = XT
WTD = OFF
int var ;
int wtf ;
void main(void)
{
TRISB = 0 ;
PORTB = b'00110011' ;
var = 12 ;
PORTB = var + 0xFF ;
var ++ ;
PORTB = var - 8 ;
var -- ;
wtf = PORTB + var ;
}


А това го вади транслатора към асемблер. Не съм проверявал дали работи, само дали се компилира. На вид ми изглежда ОК :D

Код:
LIST P=16F84, R=DEC
#include <p16F84.inc>     
__config _XT_OSC & _WDT_OFF             
PadRam   EQU     0x20
wtf EQU PadRam + 1
var EQU PadRam + 0

ORG     0       
             GOTO    Start
Start

BANKSEL TRISB
MOVLW 0
MOVWF TRISB
BANKSEL PORTB
MOVLW b'00110011'
MOVWF PORTB
MOVLW 12
MOVWF var
BANKSEL PORTB
MOVLW 0xFF
ADDWF var
MOVWF PORTB
INCF var , 1
BANKSEL PORTB
MOVLW 8
SUBWF var
MOVWF PORTB
DECF var , 1
BANKSEL PORTB
MOVLW var
ADDWF PORTB
MOVWF wtf
END


Ей го как изглежда засега


Прикачени файлове:
Коментар на файл: скрийншот-че
compiller.JPG
compiller.JPG [ 69.41 KiB | Прегледано 4710 пъти ]
Чет Юли 24, 2008 12:20 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Чет Ное 02, 2006 1:13 am
Мнения: 88
Мнение 
Малко синтакс-хайлайтинг , вложени цикли и иф-ове. Блоковете if, for и while могат да се влагат един в друг до безкрай. Това е само началото. Фунцкции, структури, макроси, стрингове, флоат-ове и т.н. от самия ези, и после и ПИК-библиотеките, прекъсвания , ЛСД-та, ЛЕД-ове и тем подобни.

Тестовия Ц код ;
Код:
Processor = P16F84
int x ;
int wtf ;
int i ;
void main(void)
{
i = 0 ;
x = 0 ;
wtf = 0 ;
TRISB = 0 ;
PORTB = b'01000110' ;

PORTB = 0 ;

for ( i = 0 ; i < 255 ; i = i + 1 )
  {
    while ( x < 10 )
    {
       x ++ ;
    }

  }
 
if ( PORTB < 1 )
  {
     PORTB = 0xFF ;
  }
i = 0 ;   
x = 0 ;
while ( i < 255 )
   {
      i ++ ;
   }

}


И генерирания асемблер

Код:
LIST P = P16F84 , R=DEC
#include <P16F84.inc>
PadRam EQU 0x20
x EQU PadRam + 0
wtf EQU PadRam + 1
i EQU PadRam + 2
ORG 0x00
GOTO Start
  Start
CLRF i
CLRF x
CLRF wtf
BANKSEL TRISB
CLRF TRISB
BANKSEL PORTB
MOVLW b'01000110'
MOVWF PORTB
BANKSEL PORTB
CLRF PORTB
MOVLW 0
MOVWF i
L_01:
MOVLW 255
SUBWF i ,0
BTFSC STATUS, C
GOTO L_11
L_02:
MOVLW 10
SUBWF x ,0
BTFSC STATUS, C
GOTO L_12
;add code here
INCF x , 1
GOTO L_02
L_12:
L_21:
MOVLW 1
ADDWF i ,1
GOTO L_01
L_11:
BANKSEL PORTB
MOVLW 1
SUBWF PORTB, 0
BTFSC   STATUS, C
GOTO L_03
;add code here
BANKSEL PORTB
MOVLW 0xFF
MOVWF PORTB
L_03:
CLRF i
CLRF x
L_04:
MOVLW 255
SUBWF i ,0
BTFSC STATUS, C
GOTO L_14
;add code here
INCF i , 1
GOTO L_04
L_14:

END


Прикачени файлове:
pic_c.JPG
pic_c.JPG [ 63.1 KiB | Прегледано 4707 пъти ]
Съб Юли 26, 2008 12:37 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
solenoid написа:
... Ще му вървя аз да му оправям нещата. Натряскало СТАТУС-и през 2 реда и все вдига и сваля накакви битове там. Разкарах ги, кода олекна наполовина и пак си бачка.. :?

...Ще му вървя аз да му оправям нещата. Натряскало BANKSEL-и през 2 реда и все вдига и сваля накакви битове там... :wink:


Съб Юли 26, 2008 11:28 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Чет Ное 02, 2006 1:13 am
Мнения: 88
Мнение 
Това са бели кахъри. :D Виждам го тоя проблем(и още доста други) и го имам в предвид, като му дойде времето за оптимизации. Сега е важно да бачка там..Банките не би трябвало да са проблем, ако знам каква е текущата банка и я сменям само при регистри дето са другаде.
То и сега има начални наченки на оптимизации. Като видя, че се просвоява нула- направо CLRF. Като видя че се вади или прибавя 1 -incf,decf( в текущата версия)


Съб Юли 26, 2008 1:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
Просто ти намеквам ,че ако вървиш по утъпкана пътека, ще стигнеш докъдето са стъгнали и другите, само дето ще си закъснял. :wink:
Твоята идея от "обща" бързо си я свел до нещо като "полукомпилатор на Ц за ПИК". За тия които пишат на Ц е твърде недостатъчно, а за тия които пишат на асм хич не им върши работа. Ти всъщност на кои искаш да помогнеш?


Съб Юли 26, 2008 1:42 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Чет Ное 02, 2006 1:13 am
Мнения: 88
Мнение 
Чакай сега, аз не съм благотворително дружество и не искам да помагам на никой. Просто си чеша крастата. Проекта ми е интересен и едновременно с това си е упражнение.
Иначе съм закъснял, да. Няма вече ентусиасти да вземем да спретнем един изтънчен компилатор като сръбското микроС :D


Съб Юли 26, 2008 2:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
solenoid написа:
Чакай сега, аз не съм благотворително дружество и не искам да помагам на никой. ...

Жалко за тебе защото много хора са готови даже да си плащат за получената помощ. :wink: Ако продукта ти не помага на никого значи е безполезен. Гледай поне на тебе да помогне , че да не е без хич.


Съб Юли 26, 2008 2:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
"изтънчен компилатор като сръбското микроС"
Не че те хваля ама като прочетох тази фраза ми идва наум само думата полуидиот :):)
Всъщност излъгах.
Полу го сложих после за благозвучие ;)


Нед Юли 27, 2008 3:28 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 32 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни