Ich habe gerade folgende Logik in Assembler:
wenn a=10 oder b=10 oder c=10 oder d=10
dann f=111
In Assembler habe ich eine Anweisungsstruktur dafür, die 78 Bytes braucht... das geht doch sicherlich deutlich kürzer und schneller... wer hat kreative Ideen??
if... then... or... Assembler
Moderator: Rockford
- Kveldulfur
- Beiträge: 1058
- Registriert: 17.08.2021 02:32
- Has thanked: 496 times
- Been thanked: 453 times
- Kontaktdaten:
Re: if... then... or... Assembler
Hallo!
Also da käme mir folgendes in den Sinn...
Grüße
Janko
Also da käme mir folgendes in den Sinn...
Code: Alles auswählen
LDA #10 ; Mit 10 vergleichen
CMP VarA
BEQ true ; Wenn A = 10 dann true
CMP VarB
BEQ true ; Wenn B = 10 dann true
CMP VarC
BEQ true ; Wenn C = 10 dann true
CMP VarD
BEQ true ; Wenn D = 10 dann true
false:
JMP Irgendwohin
true:
LDA #111
STA VarF
...
Janko
Meine Projekte findest Du hier...
Re: if... then... or... Assembler
Hallo! Statt jede Variable einzeln zu vergleichen, könntest du die Werte in einem Register addieren und dann prüfen, ob eine davon 10 ist, z.B. mit Subtraktion und einem Sprung bei Null. Oder du nutzt eine Schleife, die die Werte nacheinander überprüft, um Code zu sparen. Bitmasken helfen hier weniger, da Zahlenwerte verglichen werden. Ohne genauen Assemblertyp schwer zu sagen, aber meistens sind kurze Vergleiche im Register und bedingte Sprünge effizienter als lange If-Ketten.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast