| |
|
|
GDL | Hallöle Community,
I me in the momentum on 2 projects concentrate, would like I the RVK Basic through what Own supplant.
what have I already: - whom detailed Befehlsumfang from the Microcontrolern - a functioning RVK Compiler (and accordingly a Presentation what from whom individual Basic-command in Assembler go should)
Wovon I at all none plan have - How resolve one on the best nested command or Schleifenroutinen on - How are one generally on the best to, there zeilenweises 1 To 1 Übersetzen not goes.
Perhaps can someone Schützenhilfe give.
the whole Although one utterly harter Brocken for me, but I will be not therefore herumkommen.
Grüßle Georg |
|
|
| |
|
|
|
| You must hold to ASM dissolve.
so becomes z.B. a Variable a (in the drop sooner solid) SpeicherAdresse, z.B. a address in the Stack.
means var a=0 I need a variable a, means push 0 and Stackadresse remember in the Kompilierer. And if somewhere a=22 standing, then something like How (now time adopted 32bit)
push eax //eax on stack secure push ebx //ebx on stack secure mov eax,AdresseVonAImStack mov ebx,22 mov [eax],22 pop ebx pop eax
the can naturally kürzer, ought to mere one Image go.
which ASM this Microkontroller supported white I do not.
I wealth creep and ifs are sooner your question.
means one if set I by xpse to assembler circa sinnbildlich so:
if 10=20 //print else //exit endif
becomes
push eax push ebx mov eax,10 mov ebx,20 cmp eax,ebx pop eax pop ebx jne make001else //print jmp make001end make001else: //exit make001end: weiterimtext...
the would then one if.
creep are too only one if.
while 1<10 //print wend
is indeed only
make002loop: push eax push ebx mov eax,1 mov ebx,10 cmp eax,ebx pop eax pop ebx JGE make002end //print jmp make002loop
Perhaps helps it you I with xpse beget, simply time whom asm look at.
thereafter can You whom ASM to Opcodes dissolve. tougher becomes not as to ASM but since must You with whom Jumps even too The Sprungweiten mind The according to CPU/ OS border having. |
|
|
| |
|
|
|
GDL | Hi,
so far kapier I the Schonmal. me GEHTS but To allererst time around the discern and evaluate the Presentation.
Extremfall: If (((a+7)/2)-5)+(14/c) > something
Gibts there irgendeinen algorythmus or something around the correctly. To discern and then to point to strich under Beachtung the clinging aufzulösen.
or mulish The clinging of inside to outer work out? |
|
|
| |
|
|
|
| the goes too well, write for beginning a function parseArg(ument) - so GetControlParas (B too xpse "Profan"-Argumente to ASM:
example:
a=(10+20)+30
becomes:
tmp1=10+20 //Klammer in front+hinten can always weggeworfen go if only clinging a=tmp+30
becomes
tmp1=10 add tmp1,20 a=tmp add a,30
ergo find Klammerauf and nimm any characters To to korrespondierenden Klammerzu. simply Zeichenweise parsen and with eachone new opened Klammer simply a counter hochzählen and with of/ one Klammerzu whom counter runtersetzen so too really The korrespondierende Klammer found becomes.
so becomes from ((10+20)*(30+40)) this: (10+20)*(30+40)
because the Außenklammern simply again weggeworfen go can because tappt im dunkeln korrespondieren.
so will need you a Klammernauflöser and several Operatorenauflöser apply in the Order point, Strich
the whole name I gladly wrong Argumenteauflöser.
Nochmal:
a=((10+20)*(30+40)) becomes this: a=(10+20)*(30+40)
because the Außenklammern simply again weggeworfen go can because tappt im dunkeln korrespondieren.
then finds the Klammernauflöser again a klammer, integrally in front The.
then let[ed] it To to korrespondierenden Klammer everything one, finds means 10+20, observe 10+20 and 10+20 becomes supplant in tmpX (X is a Zahlenwert the simply hochzählt, means tmp1, tmp2...)
Ergo
a=(10+20)*(30+40)
becomes
tmp1=10+20 a=tmp1*(30+40)
then: another Klammer in the argument? Yes, ergo finds the Klammernauflöser (30+40) and supplant it in (this time) tmp2 and observes 30+40
Ergo:
tmp1=10+20 tmp2=30+40 a=tmp1*tmp2
another Klammer in the argument? No, means ex to that Operatorenauflöser for Punktrechnung.
One Malzeichen in a=tmp1*tmp2? Yes, ergo linkes argument parsen = tmp1, right argument tmp2.
Ergo:
tmp1=10+20 tmp2=30+40 tmp3=tmp1 mul tmp3,tmp2 a=tmp3
another Punktrechnungsoperator? No, ergo moreover to that Operatorenauflöser for Strichrechnung (operates very How the Punktrechnungsoperatorenauflöser):
One plus found? Yes, z.B. in tmp1=10+20. again linkes and right argument find, yields left 10 and right 20.
ergo, from: tmp1=10+20
becomes
tmp4=10 add tmp4,20 tmp1=tmp4
next row is tmp2=30+40, again Strichrechner found, ergo dissolve:
from: tmp2=30+40
becomes
tmp5=30 add tmp5,40 tmp2=tmp5
Then nirgends More one Operator found, ergo come out:
tmp4=10 add tmp4,20 tmp1=tmp4 tmp5=30 add tmp5,40 tmp2=tmp5 tmp3=tmp1 mul tmp3,tmp2 a=tmp3
the can slight to ASM brought go, beispiels 32bit asm:
but the had we Yes supra already.
is mist To explain, sorry. |
|
|
| |
|
|
|
GDL | Hallöle,
erstmqal many Thanks for your working out. Beautiful slow come I behind it what with RVK Singlepass1 and Singlepass2 To ..4 is.
is mist To explain, sorry
i know, institute of technology me too heavy The right ask To to put. but I beiß me there now through.
Grüßle Georg |
|
|
| |
|
|
|
GDL | Hallöle David,
come along. variables from code filter out goes already and the Vektortabellen for different Devices under Berücksichtigung the interrupts to create working already. be now on the "Befehlerkennung" and its Umsetzung into Arbeitsregister. with difficulty ernährt itself the Eichhörnchen.
Grüßle Georg |
|
|
| |
|
|
|
GDL | Hi,
@David: thanks for hints on the Tele.
first lauffähige Codes there already. |
|
|
| |
|
|