Διαχειρίσου τη λίστα υψηλών σκορ ενός παίκτη.
Η αποστολή σου είναι να φτιάξεις ένα component υψηλών σκορ για το κλασικό παιχνίδι Frogger, ένα από τα παιχνίδια με τις περισσότερες πωλήσεις και τα πιο εθιστικά όλων των εποχών, καθώς και ένα κλασικό της εποχής των arcade. Η αποστολή σου είναι να γράψεις μεθόδους που επιστρέφουν το υψηλότερο σκορ από τη λίστα, το τελευταίο σκορ που προστέθηκε και τα τρία υψηλότερα σκορ.
Οι συναρτήσεις σε αυτή την άσκηση δέχονται έναν πίνακα που περιέχει έναν ή περισσότερους αριθμούς, καθένας από τους οποίους αντιπροσωπεύει μία "βαθμολογία παιχνιδιού".
Στο assembly x86-64, τα στοιχεία ενός πίνακα προσπελαύνονται ως μετατόπιση σε bytes από έναν δείκτη βάσης.
Αυτός ο δείκτης βάσης περνιέται σε έναν καταχωρητή, σύμφωνα με τη Σύμβαση Κλήσης System V AMD64 ABI.
Τα 3 πρώτα ορίσματα περνιούνται στους rdi, rsi, rdx, με αυτή τη σειρά.
Καθώς οι βαθμολογίες του παίκτη αναπαρίστανται ως ακέραιοι 32 bit, που καταλαμβάνουν 4 bytes, μπορούν να διαβαστούν από
rsi |
|---|
dword [rsi] |
dword [rsi + 4] |
| ... |
dword [rsi + 4*scores_count - 4] |
Η personal_top_three() θα πρέπει να γράφει τις κορυφαίες βαθμολογίες του παίκτη σε ένα buffer, το οποίο επίσης περνιέται σε έναν καταχωρητή και προσπελαύνεται με τον ίδιο τρόπο.
rdi |
|---|
dword [rdi] |
dword [rdi + 4] |
| ... |
Οι ακέραιες τιμές, κατά σύμβαση, επιστρέφονται στον καταχωρητή rax.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις x86-64 Assembly με 22 έννοιες130 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.