Français
Stammtisch & le café

Aider chez Compiler Erstellung

 

GDL
Hallöle Community,

là je mich im Moment sur 2 Projekte konzentriere, voudrais je cela RVK Basic par quoi Eigenes ersetzen.

quoi habe je bereits:
- den genauen Befehlsumfang de den Microcontrolern
- une fonctionnement RVK Compiler (et somit une Présentation quoi aus den individuel Basic-Befehlen dans Assembler volonté soll)

de quoi je überhaupt keinen plan habe
- comment löst on am Besten imbriquées Befehle ou bien Schleifenroutinen sur
- comment allez on generell am Besten avant, là zeilenweises 1 trop 1 Übersetzen pas allez.

peut-être peux mir quelqu'un Schützenhilfe donner.

cela Ganze ist zwar un äußerst harter Brocken pour mich, mais je werde pas tout autor herumkommen.

Grüßle
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
16.02.2015  
 



Du musst arrêt pour ASM auflösen.

So wird z.B. aus einer Variable une (dans dem le cas plutôt feste) SpeicherAdresse, z.B. une Adresse im Stack.

alors var a=0
il me faut une variable a, alors push 0 et Stackadresse merken im
Kompilierer. et si irgendwo a=22 steht, ensuite quelque chose comme comment (maintenant la fois
angenommen 32Bit)

push eax //eax sur stack sichern
push ebx //ebx sur stack sichern
mov eax,AdresseVonAImStack
mov ebx,22
mov [eax],22
pop ebx
pop eax

cela peux on naturellement kürzer, sollte bloß un Bild volonté.

quelle ASM cette Microkontroller soutenu sais je pas.

je schätze Schleifen et ifs sommes plutôt Votre Frage.

alors un si mets je per xpse pour assembler um sinnbildlich so:

si 10=20
//imprimer
d'autre
//exit
endif

wird trop

push eax
push ebx
mov eax,10
mov ebx,20
cmp eax,ebx
pop eax
pop ebx
jne marke001d'autre
//imprimer
jmp marke001end
marke001d'autre:
//exit
marke001end:
weiterimtext...

cela wäre ensuite un si.

Schleifen sommes aussi seulement un si.

tandis que 1<10
//imprimer
Wend

ist oui aussi seulement

marke002loop:
push eax
push ebx
mov eax,1
mov ebx,10
cmp eax,ebx
pop eax
pop ebx
JGE marke002end
//imprimer
jmp marke002loop

peut-être hilft es Dir quoi je avec xpse erzeuge, simple la fois den asm anschauen.

après peux Du den ASM pour Opcodes auflösen. Schwieriger wird
cela pas comme pour ASM mais là musst Du chez den Jumps plan aussi
qui Sprungweiten tenir compte de qui je pour CPU/ OS Grenzen avons.
 
16.02.2015  
 




GDL
Hi,

soweit kapier je cela Schonmal.
Mir gehts mais trop allererst la fois um cela Erkennen et Auswerten qui Présentation.

Extremfall:
Si (((a+7)/2)-5)+(14/c) > irgendwas

gibts là irgendeinen algorythmus ou bien irgendwas um cela richtig trop erkennen et ensuite pour punkt avant strich sous attention qui Klammern aufzulösen.

ou bien stur qui Klammern de dedans pour aussen abarbeiten?
 
XProfan X3
Windows7 Xprofan 8,9,10 [...]  [...] 
16.02.2015  
 



cela allez aussi bien, schreibe pour den Anfang une Funktion
parseArg(ument) - so wandelt aussi xpse "Profan"-Argumente pour ASM:

Beispiel:

a=(10+20)+30

wird trop:

tmp1=10+20 //Klammer vorne+hinten peux toujours weggeworfen volonté si einzige Klammern
a=tmp+30

wird trop

tmp1=10
add tmp1,20
a=tmp
add a,30

ergo finde Klammerauf et prends alle marque jusqu'à zur korrespondierenden
Klammerzu. simple Zeichenweise parsen et chez chacun récente geöffneten
Klammer simple une Zähler hochzählen et chez einer Klammerzu den Zähler
runtersetzen sodass aussi wirklich qui korrespondierende Klammer trouvé wird.

So wird aus
((10+20)*(30+40))
ca:
(10+20)*(30+40)

weil qui Außenklammern simple wieder weggeworfen volonté peut weil
vous korrespondieren.

So brauchst Du une Klammernauflöser
et plusieurs Operatorenauflöser angewandt dans qui Reihenfolge Punkt, Strich

cela ganze nenne je volontiers faux Argumenteauflöser.

Nochmal:

a=((10+20)*(30+40))
wird trop ca:
a=(10+20)*(30+40)

weil qui Außenklammern simple wieder weggeworfen volonté peut weil
vous korrespondieren.

ensuite findet qui Klammernauflöser wieder une klammer, entier vorne qui.

ensuite liesst il jusqu'à zur korrespondierenden Klammer alles un, findet alors 10+20,
merke 10+20 et 10+20 wird ersetzt dans tmpX (X est un Zahlenwert qui simple hochzählt, alors tmp1, tmp2...)

Ergo

a=(10+20)*(30+40)

wird trop

tmp1=10+20
a=tmp1*(30+40)

ensuite: encore une Klammer im Argument? oui, ergo findet qui Klammernauflöser
(30+40) et ersetzt es dans (diesmal) tmp2 et merkt 30+40

Ergo:

tmp1=10+20
tmp2=30+40
a=tmp1*tmp2

encore une Klammer im Argument? non, alors ab zum Operatorenauflöser pour
Punktrechnung.

un Malzeichen dans a=tmp1*tmp2? oui, ergo linkes Argument parsen = tmp1, rechtes
Argument tmp2.

Ergo:

tmp1=10+20
tmp2=30+40
tmp3=tmp1
mul tmp3,tmp2
a=tmp3

encore un Punktrechnungsoperator? non, ergo plus zum Operatorenauflöser pour
Strichrechnung (arbeitet oui c'est ca comment qui Punktrechnungsoperatorenauflöser):

un Plus trouvé? oui, z.B. dans tmp1=10+20. Wieder linkes et rechtes Argument
trouver, ergibt à gauche 10 et à droite 20.

ergo, aus:
tmp1=10+20

wird

tmp4=10
add tmp4,20
tmp1=tmp4

prochain la ligne ist tmp2=30+40, wieder un Strichrechner trouvé, ergo auflösen:

Aus:
tmp2=30+40

wird

tmp5=30
add tmp5,40
tmp2=tmp5

ensuite wird nirgends plus un Operator trouvé, ergo venez heraus:

tmp4=10
add tmp4,20
tmp1=tmp4
tmp5=30
add tmp5,40
tmp2=tmp5
tmp3=tmp1
mul tmp3,tmp2
a=tmp3

cela peux léger pour ASM gebracht volonté, beispiels 32bit asm:

mais cela hatten wir oui dessus déjà.

Ist mist trop expliquer, sorry.
 
16.02.2015  
 




GDL
Hallöle,

erstmqal vielen Dank pour deine Ausarbeitung.
joli lente viens je derrière elle quoi chez RVK Singlepass1 et Singlepass2 jusqu'à ..4 ist.


Ist mist trop expliquer, sorry


je sais, tu mich aussi schwer qui richtigen Fragen trop se mettre.
mais je beiß mich là maintenant par.

Grüßle
Georg
 
XProfan X3
Windows7 Xprofan 8,9,10 [...]  [...] 
17.02.2015  
 




GDL
Hallöle David,

viens vorwärts. Variablen aus Code herausfiltern allez déjà et qui Vektortabellen pour qui verschiedenen Devices sous Berücksichtigung qui Interrupts trop erstellen funzt aussi déjà.
suis eh bien à qui "Befehlerkennung" et en Umsetzung dans qui Arbeitsregister.
Mühsam ernährt sich cela écureuil.

Grüßle
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
26.02.2015  
 




GDL
Hi,

@David: merci pour qui Tips am Tele.

Erste lauffähige Codes gibt es déjà.
 
XProfan X3
Windows7 Xprofan 8,9,10 [...]  [...] 
14.03.2015  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

7.092 Views

Untitledvor 0 min.
Sven Bader21.03.2023
Ju24.02.2017
iF30.12.2015
Anfänger30.12.2015
plus...

Themeninformationen

cet Thema hat 2 participant:

GDL (5x)
iF (2x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie