Отговори на тема  [ 27 мнения ]  Отиди на страница Предишна  1, 2
Интерпретатор за асемблер ??? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Егати писанията.
Защо просто не си създаеш един проект тест, за F877 да речем и всичкокодове които икаш да пробваш не ги пускаш вътре му, и след това да ползваш MPLAB-а? MPLAB прави точно това, симулира. Рлано той не компилира нищо, както и други казаха ASM не се компилира, защото няма към какво.
Процеса на компилация е сложено, в него компилатора решава как да изпълни команда от високо ниво на ниско ниво, като тук се взема под внимание предпроцесорни команди, логиката заложна в самия компилатор а и самият код. В твоя случай няма нищо такова. MPLAB прави един прост превод без да се влага никаква логика, и реално пишейки на asm пишеш на машинен език който контролера разбира, асм просто е човешкия вид на машинния език. Да речем addwf абсолютно винаги се превежда като опкод 00 0111 dfff ffff, където съответно d ти е параметър fff ffff също тие параметър който пишеш в асм. Т.е. MPLAB не компилира нищо,ти му пишеш командите дирктно на машинен език.
Както ти казах за това което искаш, си правиш един тестов проет и в него си пробваш всички кодове, явно целта е да избегнеш инициализацията на конторлера и всички свързани с него команди.


Нед Мар 18, 2007 11:38 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
То стана малко като кръгова отбрана, но няма да се дам лесно :)
ToHu, това което предлагаш съм си го направил. Но това не е решаване ,а заобикаляне на проблема. А за MPLAB-a си в грешка - той прави компилация преди всяка симулация, като крайния резултат е hex-файла. Хекса- е "истинския" машинен код. Пробвай - направи промяна в асм-а и пусни пак симулация но без да прекомпилираш - MPLAB-а няма да вземе в предвид промяната защото продължава да си работи със старата компилация. MPLAB-а му вика на това "build" но там се включва и компилацията.
Асемблера не е машинен език, а е "машинно ориентиран език", има разлика. Както например ФОРТРАН-а е "математически ориентиран" и т.н.
А компилацията винаги се прави към "изходен файл". Така,че израза "няма към какво" е малко странен. Компилатора за асемблера на пиковете е програмата MPASM.

Всеки код ,който може да се компилира, може и да се интерпретира. Това са просто двата начина на изпълнение на компютърни програми. Припомнете си първите уроци по информатика.
Програмата на Асемблер също си е компютърна програма, както и тази на C, Java, Pascal, BASIC и т.н. Просто набора й от команди е функционално по-ограничен и е "натъкмен" да съвпада 1:1 с машинните инструкции на точно определен процесор. Това не значи ,че друг процесор не може да ги изпълни - просто ще му е нужен преводач, сиреч Интерпретатор или Компилатор.


Нед Мар 18, 2007 3:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
ji4ka - всяка команда на асемблер си има опкод - я ми кажи кой език от високо ниво има опкод на командите. ADDLW е къде, къде по-лесно да се запомни от колкото опкода и - затова е измислен асемблера - за да не програмираш с таблица в ръка. Асемблера нито се компилира, нито се интерпретира, няма оптимизации, няма нищо - всеки път едни и същи команди се транслират към едни и същи опкодове. Това, че неможеш да намериш готова програма за това, за което говориш трябва да ти говори много, или си мислиш, че ти си единствения човек на планетата земя, който се е сетил за тоя "интерпретатор" :) . Вземи се в ръце най-накрая :D .


Пон Мар 19, 2007 3:25 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
Dimitar, точно превода на addlw в опкод се нарича компилиране (или асемблиране) и се извършва от компилатора. Няма асемблер без компилатор , просто в новите програми тия неща са покрити, но си ги има. Какво е според тебе MPASM?
Инерпретаторите вършат същата работа като компилаторите ,но в друга поредност - при тях резултата от компилирането не се запазва, а веднага се изпълнява. А това ,че друг не се е сетил, ме съмнява , но дори и да е така за мене не е аргумент - 99.9999% от хората си нямат и понятие за това което си говорим тука, така че ако някой от нас не се сети, няма кой друг.
По-долу пускам малко инфо - хардуера е поостарял, но принципите са си същите.


Прикачени файлове:
Коментар на файл: Що е това АСЕМБЛЕР и дали се компилира ?
asm.gif
asm.gif [ 172.98 KiB | Прегледано 2344 пъти ]
Пон Мар 19, 2007 1:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ако погледнем на самата дума компилация, която значи събирам, съставям, съставям речник то може да приемем че това което прави MPLAB е компилация. Но реално е прието компилация да се нарича създаването на асм файл и последващия го hex файл от друг файл който е от език на високо ниво. Не можеш да делиш машинен еик от асемблер, те са едно и също. Тов акоето си сканирал до някъде е ОК, но до някъде. Значи да пишеш на асемблер е като да пишеш на български но със съкращения, т.е. ти не пишеш на друг език, и това кеото пишеш 100% разбираемо от процесора, но за да е по лесно на пишещия са въведени някои съкращения. MPASM не рави нищо друго освен да вземе командите които вувеждаш като асм и да ги превърне в опкодове, освен това за да улесни писещия самия асемблер позволява дифениране на променли и др подобни, които се разчитат от "компилатора" и след това също се заместват.
Това което говориш не може да съществува, към какво искаш да интерпретира. Интерпретатора работи на процесора на който е пуснат, т.е. когато работиш на РС би следвало да интерпретира асм командите към РС команди, което е безсмилено. Това което прави MPLAB когато симулираш е точно това, а естетсвено е д иаш ралзика в hex кода, тъй като той е файл подготвен за запиш в процесора, и ако не го генерираш наново няма да има промяна. Генерирането на този файл става с build.
Не напразно бутона който прави файла се нарича assemble а не compile, както е във всички компилатори. Също така ако се загледаш ще видиш че изходният файл може да е в различни формати. Изходният файл на всеки компилатор е лист, който съдържа asm кодовете, от него като вториен се създава hex файла, според нуждите.
И в крйана сметка щом правиш това с мплаб не разбирам какув е проблема, мурзите да натискаш build ????


Пон Мар 19, 2007 8:28 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
ToHu, това което описваш си е точно процес на компилиране, затова няма нужда "компилатор" да е в кавички. Вярно е ,че при Асемблерите компилирането е по-просто, но това не променя същността му.

Както и да е. Зададох конкретен въпрос и отговора беше "Категорично НЕ" . Все пак и НЕ-то си е отговор. Предлагам да спрем да обсъждаме въпроса защото стана твърде "Академичен".
Благодаря на всички за мненията!


Вто Мар 20, 2007 1:56 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
ji4ka - дори и аз немога да схвана идеята , но ако искаш пробваи CCS в комбинация с Proteus.
Мисля че по-добър тандем нема :)

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


Чет Мар 22, 2007 11:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
аз бих искал да поправя жичката в траспозицията:

няма компилатор без асемблер (аксиома)

обратното просто не е вярно (че няма асемблер без компилатор)

асемблерите (в контекста на програмиране) са софтуери, които превеждат мнемоничен код в опкодове. п опроста таблица, без никаква мисъл. може да имат и някой допълнителни функции, като работа с етикети, макроси и др. подобни, но те не са задължителни.

ако асемблера е от по-висок клас, може да прави обектен файл, който после свързващия редактор (linker) навръзва в изпълним код.
но това далеч не е задължително.

темата за интерпретатор на асемблер във вида, в който го искаш, е безсмислена.


Пет Мар 23, 2007 12:00 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Sonic написа:
Мисля че по-добър тандем нема :)

Сигурен ли си? :D


Пет Мар 23, 2007 1:25 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
ji4ka написа:
Dimitar, точно превода на addlw в опкод се нарича компилиране (или асемблиране) и се извършва от компилатора. Няма асемблер без компилатор , просто в новите програми тия неща са покрити, но си ги има. Какво е според тебе MPASM?
Инерпретаторите вършат същата работа като компилаторите ,но в друга поредност - при тях резултата от компилирането не се запазва, а веднага се изпълнява. А това ,че друг не се е сетил, ме съмнява , но дори и да е така за мене не е аргумент - 99.9999% от хората си нямат и понятие за това което си говорим тука, така че ако някой от нас не се сети, няма кой друг.
По-долу пускам малко инфо - хардуера е поостарял, но принципите са си същите.


eeeee ji4ka, ji4ka,
как ме радваш че съм от оня 0.0001% дето са чували за машинен код,opcode, asm, компилатори, интерпретатори и други сложни думи дето с тях може да блеснеш в компания на випускници на трактористки техникум дори и без да ги разбираш по смисъл и предназначение:)

и друго-> всеки може да си стопли вода, но това не значи че той е откривателя и :!:

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пет Мар 23, 2007 2:14 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
Dimitar написа:
Sonic написа:
Мисля че по-добър тандем нема :)

Сигурен ли си? :D


ааа - за по-гоелмите батковци в ПИК-овете и АВР-ите съм на 100% сигурен че въртят други шмекерии,
ама за начинаещи тестери като мене - тандема си е добре :)


Съб Мар 24, 2007 8:28 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Самия протеус не е лош, не знам да има негов заместител, полезен е дотолкова че можеш да тестваш части от код. Никога не съм го позлвал за тестване на цялостенпроект, т.е само веднъж, за един генератор на ток с PWM , не поврвах че го изсимулира. А за компилатор, там е въпрос на вкус, едва ли CCS е с нещо по добър или по лош от останалите, вски си има предимста и недостатъци.


Съб Мар 24, 2007 8:58 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 27 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

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


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

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