Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Assembler ::  Brauche Hilfe, bei einen Spamfilter in Assembler.     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
UniStudent69
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.01.2018
Beiträge: 3
Beitrag UniStudent69 Mitglied 14:53:22 17.01.2018   Titel:   Brauche Hilfe, bei einen Spamfilter in Assembler.            Zitieren

Hey Leute,
ich bin ein blutiger Anfänger in Assembler, und ich soll einen Spamfilter für Emails schreiben, der für jedes "Badword" die "Gewichtung" erhöht. Mein Gedanke war der das ich zuerst auf das erste Email-Wort gehe das mit allen "Badwords" abgleiche und dann halt, wenn es mit allen Badwords abgeglichen wurde auf das nächste Email-Wort gehe. Natürlich hab ich einige Fehler im Code, die ich leider nicht überprüfen kann, da QTSpim einfach beim Laden der Datei "Keine Rückmeldung" mehr gibt. Ich dachte zuerst das irgendwo eine Endlosschleife drin ist, und einfach irgendwo was vergessen habe, aber nach exzessiven Suchen nichts gefunden habe, wende ich mich nun an das Forum. Ich weiß das der code momentan bei

"bne email_buffer($a2), badwords_buffer($a3), Else3"

ein "Syntax Error" hervor bringt.

Danke schon mal in voraus.

Hier ist der jetzige Code den ich habe.

Assembler:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
spamfilter:
    ### Register gemaess Registerkonventionen sichern
    addi $s1, $s1, -20
    sw $a0, 0($s1)
    sw $a1, 4($s1)
    sw $a2, 8($s1)
    sw $a3, 12($s1)
    sw $v0, 16($s1)
   
    ### Badwords liegen im Puffer badwords_buffer
    ### Der Text der E-Mail liegt im Puffer email_buffer
   
    ### Schleife ueber Bad words (wort1,gewicht1,wort2,gewicht2,...)
        ### lese ein Wort
        ### lese und konvertiere Gewicht
        ### suche alle Vorkommen des Wortes im Text der E-Mail und addiere Gewicht
 
   add $a0, $zero, $zero                # Value von $a0 wird auf Null gesetzt
   add $a1, $zero, $zero                # Value von $a1 wird auf Null gesetzt
   add $a2, $zero, $zero                # Value von $a2 wird auf Null gesetzt
   add $a3, $zero, $zero                # Value von $a3 wird auf Null gesetzt
   add $v0, $zero, $zero                # Value von $v0 wird auf Null gesetzt
 
   la $t0, size                         #lade Addresse size auf $t0
   la $t1, badwords_size                #lade Addresse badwords_size auf $t1
 
for:
beq $a0, $t0 , Endif                                             # Wenn x/a0 == EmailWörter, wenn alle Email Wörter durchgelaufen wurden, beende loop
    beq $a1, $t1, Else2                                          # Wenn i/a1 == 20 gehe zu Else2 um das nächste Wort der Email zu benutzen
        bne email_buffer($a2), badwords_buffer($a3), Else3       # Email_buffer != badwords_buffer um das nächste Wort der Badwords zu benutzen
        beq email_buffer($a2), badwords_buffer($a3), Else        # Wenn Email_buffer == badwords_buffer gehe zu else um Gewicht zu addieren
                             
                                                     
j for                                               # Schleifen wiederholung                  
                                                       
Else:                                               # Gewichtung wird hochgezählt und zu Else2 verwiesen                                                        
                                                         
    addi $v0, v0, 1                                 # v0/Gewicht wird hochgezählt                            
    j Else2                                         # Geht zu Else2
 
Else2:                                              # Nächstes Email Wort wid ausgewählt und die Schleife wiederholt
   
    add $a1, $zero, $zero                           # i/$a1 wird auf Null gesetzt um wieder von vorne die Wörter durchlaufen zu können
    add $a3, $zero, $zero                           # $a3 wird auf Null gesetzt um wieder von vorne die Wörter durchlaufen zu können
    addi $a2, $a2, 4                                # Wählt nächstes Email Wort aus
    addi $a0, $a0, 1                                # x/a0 wird hochgezählt
    j for                                           # Schleife wird wiederholt
 
Else3:
 
    addi $a1, $a1, 1                                # i/$a1 wird hochgezählt
    addi $a3, $a3, 4                                # Wählt nächstes BadWort aus
    j for                                           # Geht zu for
 
Endif:                                              #v0/Gewichtung wird zurückgegeben                                              
 
    ### Rueckgabewert setzen
    lw $v0, 16($s1)
    addi $s1, $s1, 4
    ### Register wieder herstellen
    jr $ra


Assembler:
1
2
3
4
5
6
7
8
9
10
.data
 
email_buffer: .asciiz "Hochverehrte Empfaenger,\r\n\r\nbei dieser E-Mail handelt es sich nicht um Spam sondern ich moechte Ihnen\r\nvielmehr ein lukratives Angebot machen: Mein entfernter Onkel hat mir mehr Geld\r\nhinterlassen als in meine Geldboerse passt. Ich muss Ihnen also etwas abgeben.\r\nVorher muss ich nur noch einen Spezialumschlag kaufen. Senden Sie mir noch\r\nheute BTC 1,000 per Western-Union und ich verspreche hoch und heilig Ihnen\r\nalsbald den gerechten Teil des Vermoegens zu vermachen.\r\n\r\nHochachtungsvoll\r\nAchim Mueller\r\nSekretaer fuer Vermoegensangelegenheiten\r\n"
 
size: .word 550
 
badwords_buffer: .asciiz "Spam,5,Geld,1,ROrg,0,lukrativ,3,Kohlrabi,10,Weihnachten,3,Onkel,7,Vermoegen,2,Brief,4,Lotto,3"
badwords_size: .word 93
 
spamscore_text: .asciiz "Der Spamscore betraegt: "
C++ Forum :: Assembler ::  Brauche Hilfe, bei einen Spamfilter in Assembler.   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.