Forum: Compiler & IDEs Probleme mit Assemblercode


von John (Gast)


Lesenswert?

Hi, ich bin gerade dabei einen Assemblercode auf eine andere 
Entwicklungsumgebung zu portieren.

-----------------------
Quelle:

Assemblercode: bz $+6

Doku: ?
-----------------------

-----------------------
Ziel:

Assemblercode: ?

Doku: Doku: Note bncond denotes an instruction that effects control
      ranches under opposite conditions, for example, bnz for bz
      or ble for bgt.
-----------------------

Für jeden Hilfestellung bin ich sehr dankabr.

von Oliver (Gast)


Lesenswert?

Nun ja, etwas mehr Info zu Prozessortyp und verwendeten Assembler wären 
vielleicht angebracht. Und wenn du das rausgefunden hast, beantworten 
sich auch deine Fragen alle von selber.

Dazu stellt sich die Frage, was das im gcc-Forum zu suchen hat.

Ansonsten wird "bz +6"  sowas wie "branch on zero" bedeuten, mit Sprung 
um 6 Speicherstellen nach vorne.

Wenn dir das jetzt nichts sagt, vergiß das Projekt.

Oliver

von John (Gast)


Lesenswert?

Danke für die Info.

Im Assembler Handbuch steht folgendes:

Instruction Meaning:
jarl Jump and register link
jarl22 Jump and register link [V850E2]
jarl32 Jump and register link [V850E2]
jcond Conditional branch
jmp Unconditional branch
jmp32 Unconditional branch (jump) [V850E2]
jr Unconditional branch (PC relative)
jr22 Unconditional branch (PC relative) [V850E2]
jr32 Unconditional branch (PC relative) [V850E2]

Einer von diesen Befehlen müsste ich wahrscheinlich verwenden.

von Oliver (Gast)


Lesenswert?

So ist es.

Aber vorher wäre ein Grundkurs in Assembler angesagt. Zumindest die 
allereinfachsten Grundlagen und Konzepte sollte man für solch ein 
Projekt schon kennen.

Oliver

von John (Gast)


Lesenswert?

Da ich diesen Assemblerbefehl "bz" nicht in der Doku von der 
Entwicklungsumgebeung (Quelle) finden kann, weiss ich auch nicht welchen 
Befehl ich oben nehmen müsste.

von Oliver (Gast)


Lesenswert?

"branch on zero" ist ein "Conditional branch".

Und das wird niemals nicht nur eine andere Entwicklungsumgebung sein. Du 
portierst anscheinend auf einen völlig anderen Prozessor, dazu von einer 
Quelle, die absolute Adressierungen in Sprüngen verwendet (Hex-Dump???). 
Und das alles ohne jede Ahnung von Assemblerprogrammierung.

Viel Spaß.

Oliver

von John (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab bereits alles andere schon portiert. Nur diese Anweisung "bz 
$+6"
macht mir halt noch Probleme. Ich vermute das der Befehl "jcond" in 
Frage kommt.

von John (Gast)


Lesenswert?

Weiss vielleicht jemand was das Dollerzeichen bedeutet?

von Bernhard R. (barnyhh)


Lesenswert?

John fragte:
>> Weiss vielleicht jemand was das Dollerzeichen bedeutet?

Ja, das sehe ich in den Augen Deines Auftraggebers, weil er nur auf den 
Stundensatz und nicht auf den Betrag unter dem Strich schielt!

Bernhard

von pic (Gast)


Lesenswert?

Es wird nicht mit € gerechnet, also Program aus US oder Asien ;)

pic

von Karl H. (kbuchegg)


Lesenswert?

John schrieb:
> Ich hab bereits alles andere schon portiert. Nur diese Anweisung "bz
> $+6"
> macht mir halt noch Probleme. Ich vermute das der Befehl "jcond" in
> Frage kommt.

Das ist doch alles sinnlos.
Wenn man ein Assemblerprogramm von einer Plattform A nach einer 
Plattform B portiert, muss man beide Plattformen aus dem FF beherrschen. 
Ansonsten erleidet man unweigerlich Schiffbruch. Und da ist das finden 
einer Entsprechung für einen Zero-Branch noch eine der harmlosesten 
Übungen überhaupt. Das Erkennen, Finden und Umsetzen von Logiken, die 
darauf beruhen, dass manche Anweisungen die Flags beeinflussen und 
manche nicht und wie sich das dann 5 Befehle später auswirkt wenn sie es 
tun, kann da schon viel eher zu einem Albtraum ausarten.

Was du gerade machst ist das Übersetzen von Russisch ins Englische, 
wobei du weder Russisch noch Englisch kannst und dein einziges 
Hilfsmittel ein Wörterbuch ist. Trotzdem muss die Übersetzung gut genug 
sein um damit den Pulitzerpreis gewinnen zu können. Und zwar ohne dass 
ein Lektor irgendwelche Rechtschreibfehler korrigiert oder 
Formulierungen umstellt. Bei Programmen geht es nämlich nicht darum, 
dass ein Amerikaner den Sinn schon irgendwie erraten wird. Bei 
Programmen muss jedes Detail 100% stimmen.

von Matthias L. (Gast)


Lesenswert?

>Was du gerade machst ist das Übersetzen von Russisch ins Englische,
>wobei du weder Russisch noch Englisch kannst und dein einziges
>Hilfsmittel ein Wörterbuch ist.

Und zwar eins Frau-Deutsch

;-)

von Oliver (Gast)


Lesenswert?

>Ich hab bereits alles andere schon portiert. Nur diese Anweisung "bz
>$+6" macht mir halt noch Probleme.

Ja nee, is klar...

In JEDEM Assemblerprogramm ist minimal jeder zehnte Befehl ein "bxx 
$+yy". Und das hast du schon alles portiert, bis auf diesen einen, und 
fragst jetzt erst, was das $ bedeutet?

Das passt doch alles nicht zusammen.

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.