Διαδρομές
/
x86-64 Assembly
x86-64 Assembly
/
Ασκήσεις
/
Υψηλές Βαθμολογίες
Υψηλές Βαθμολογίες

Υψηλές Βαθμολογίες

Εύκολο

Οδηγίες

Διαχειρίσου τη λίστα υψηλών σκορ ενός παίκτη.

Η αποστολή σου είναι να φτιάξεις ένα component υψηλών σκορ για το κλασικό παιχνίδι Frogger, ένα από τα παιχνίδια με τις περισσότερες πωλήσεις και τα πιο εθιστικά όλων των εποχών, καθώς και ένα κλασικό της εποχής των arcade. Η αποστολή σου είναι να γράψεις μεθόδους που επιστρέφουν το υψηλότερο σκορ από τη λίστα, το τελευταίο σκορ που προστέθηκε και τα τρία υψηλότερα σκορ.

Ειδικές σημειώσεις για το assembly x86-64

Οι συναρτήσεις σε αυτή την άσκηση δέχονται έναν πίνακα που περιέχει έναν ή περισσότερους αριθμούς, καθένας από τους οποίους αντιπροσωπεύει μία "βαθμολογία παιχνιδιού".

Στο 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.


Πηγή

Φόρος τιμής στο arcade παιχνίδι Frogger της δεκαετίας του '80
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
x86-64 Assembly Exercism

Έτοιμος να ξεκινήσεις την άσκηση Υψηλές Βαθμολογίες;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις x86-64 Assembly με 22 έννοιες130 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.