Assembler ARM - was für ein Feld für false and true?!

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von Dark-Nightmare, 20.11.2012.

  1. #1 Dark-Nightmare, 20.11.2012
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Moin Leute,
    ich bin grad etwas, am verzweifeln... ich hab eine Aufgabe und hab irgendwie keine Ahnung... Ich soll in Assembler "das Sieb von Eratosthenes" Programmieren.
    Die Zahlen sollen als Feldindex verwendet werden und die zugehörigen Feldelemente sollen Wahrheitswerte sein.
    In Java würde ich jetzt ein boolean Array erzeugen. Aber in Assembler, weiß ich nicht wie ich das machen kann. Gibt es da einen Befehl? Bzw. was für ein Feld muss ich nutzen?

    Ich bin irgendwie überfragt und hoffe ihr könnt mir da weiterhelfen ?!
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 Dark-Nightmare, 22.11.2012
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hi,
    falls jemand die Antwort auf meine Frage mal sucht, hier die Lösung.
    Prinzipiell muss man sich von dem Java-Programm verabschieden. Es ist gut um an das "Problem" ranzugehen, weil man weiß ob es funktioniert oder nicht. Ein Flussdiagramm ist vielleicht besser, da man sich dann nicht so in den Java Code reinfrisst und hängenbleibt.

    Boolean mit true und false gibt es leider nicht. Aber man kann für false den Wert 0 nehmen und für true den Wert 1. Nun muss nur noch ein Feld (hier das Array) angelegt werden, mit einer beliebigen Größe von Elementen, die jeweils 1 Byte groß sind und mit dem Wert 1 gefüllt werden.

    Es ist eigentlich schon so einfach, dass man sich quasi schämt überhaupt die Frage gestellt zu haben. ;)

    Feld: .fill Max,1,1

    Feld: -> ist die Marke die definiert, dass es sich um ein Feld handelt.
    .fill -> wird benötigt um in jedes Element einen Wert zu schreiben
    Max -> ist die Maximalanzahl an Elementen die das Feld haben soll (z.B. 1000)
    ,1 -> jedes Element ist 1 Byte groß
    ,1 -> jedes Element bekommt den Wert 1

    Als kleine Tip, Max behalten und zusätzlich Max definieren (ihr könnt es beliebig nennen). Es macht es vielleicht bei eurem Programm irgendwann einfacher den Wert zu ändern.

    Definiert wird es so:
    Max: .equ 1000

    Hier .equ ist wichtig, damit es als Konstante definiert wird. Nicht als word, hword oder Byte definieren.
     
  4. #3 xandros, 23.11.2012
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.883
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Ich arbeite zwar nicht mit Assembler, trotzdem mal eine reine Anregung:

    Warum muss man fuer ein simuliertes Boolean-Feld ein Byte verwenden? Theoretisch reicht doch bereits ein Bit dafuer aus. Entweder ist das Bit gesetzt und somit True oder nicht gesetzt und daher False.....
    Mit einem Byte (also 8 Bit) laesst sich auf diese Weise bereits ein theoretisches Array darstellen und dementsprechend auch mit den Werten 0-254 acht einzelne Boolean-Werte.

    Wenn ich das gegenueberstelle, dann verbrauche ich bei deinem Beispiel 64bit fuer 8 Booleanwerte, bei meinem hingegen nur 8bit.... und 8bit stellt unter Assembler auch die kleinste adressierbare Speichereinheit des Hauptspeichers dar.
     
  5. #4 Dark-Nightmare, 23.11.2012
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hi Xandros,
    im Grunde hast du völlig recht. Aber soweit ich es nun weiß, ist das leider nicht möglich. Die Register sind jeweils 32bit groß. Ich kann einen Wert aber nur als word (32bit) halbwort (16bit) oder Byte (8bit) definieren. Das Byte ist die kleinste Variante. :(
     
  6. #5 xandros, 23.11.2012
    Zuletzt bearbeitet: 23.11.2012
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.883
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Die Register an sich schon. Wenn du aber den Hauptspeicher direkt ansprichst (das ist auch nur ein grosses Array von Registern!)und nicht ueber Register gehst kannst du nach Bedarf die Breite der Hauptspeicherregister auf 8, 16 oder 32bit festlegen.
    Nur die Zugriffsmethode ist etwas anders, da du die exakte Speicheradresse (den Index) kennen musst.

    Und wenn du darueber ein Hauptspeicherregister auf 8bit (1 Byte) anstelle von 32bit (4 Byte) begrenzen kannst, darin dann sogar 8 Boolean-Werte unterbringst (sofern benoetigt!), spart das eine Menge Speicher......
     
Thema: Assembler ARM - was für ein Feld für false and true?!
Besucher kamen mit folgenden Suchen
  1. sieb des eratosthenes in asm

    ,
  2. assembler false 0

    ,
  3. assembler index feld arm

Die Seite wird geladen...

Assembler ARM - was für ein Feld für false and true?! - Ähnliche Themen

  1. Corel X7 Home and student

    Corel X7 Home and student: Moin! Ich habe mir Corel X7 Home and student gekauft. Das wird aber auf meinem W7 64 bit- Rechner als 32Bit- Version installiert und wenn ich es...
  2. Office2016 Home and Student - Kaufberatung

    Office2016 Home and Student - Kaufberatung: Hallo, ich möchte mir das neue "Office Home & Student 2016" zulegen. Jedoch gibt es im Netz sehr erhebliche Preisunterschiede beim Kauf. Da gibt...
  3. Klammern ändern

    Klammern ändern: Moin! Mein Verleger will, dass ich alle Klammertexte in Kursiv umändere. Muss ich jetzt in Word 2000 alle Klammern einzeln umändern, oder gibt es...
  4. Faxkonto bei Windows "Fax and Scan" einrichten

    Faxkonto bei Windows "Fax and Scan" einrichten: Guten Tag, ich möchte mir ein Faxkonto mit "Windows Fax and Scan" unter meinem Betriebssystem "Windows 7 Home Premium" einrichten. Ich habe ein...
  5. Ordnerbilder ändern (Linux&Windows)

    Ordnerbilder ändern (Linux&Windows): Hi Leute, ich hab ein selbst gebautes NAS hier welches mit Linux betrieben wird. Wenn ich über meinen Windows 8.1 Rechner darauf zugreife...