Αναλογία Structures – Ψευδοκώδικας => Assembly
Όταν ο Dr.Kameleon έγραφε, η μέρα ήτο 28/7/2009 και η ώρα 15:37
Πριν ξεκινήσω, να πω ότι η ουσία του πράγματος δεν είναι στην… Assembly – μην ξεχνάμε ότι Assembly σημαίνει 1-προς-1 μετάφραση σε γλώσσα μηχανής (a.k.a. 0101010 κ.ο.κ.) και επομένως αποτελεί ό,τι πιο κοντινό στην κατανόηση των ενδότερων λειτουργιών ενός υπολογιστή (κάτι σαν την μοριακή βιολογία ως προς την παπαρο-λογία της ιατρικής)
Σε ποιόν θα χρειαστούν? Χμμ… Σε όποιον ΚΑΙΓΕΤΑΙ όπως και ο γράφων με πράγματα που άλλοι θεωρούν ανούσια? Μάλλον. Δεν ξέρω… Κι εξάλλου, από πότε η χρηστικότητα αποτελεί ένδειξη αξίας? Αν ήταν έτσι οι μισές επιστήμες (και ΟΛΕΣ οι τέχνες) δεν θα είχαν καν λόγω ύπαρξης…
| ΣΥΜΒΟΛΙΣΜΟΙ |
|
jOP -> jump με condition/operator “OP” (όπου OP => -E, -NE, -L, -G, -LE, -GE, κλπ) OP -> condition/comparison operator op1 -> πρώτο σκέλος/operand του condition (λ.χ. για condition: op1 < op2) op2 -> δεύτερο σκέλος/operand |
While Loop
WHILE (op1 OP op2) DO
...statements...
ENDWHILE
----------------------------
WHILE:
cmp op1, op2
jOP DO
jmp ENDWHILE
DO:
...statements...
jmp WHILE
ENDWHILE:
If/Then/Else Statement
IF (op1 OP op2)
THEN ...statements1...
ELSE ...statements2...
ENDIF
----------------------------
IF:
cmp op1, op2
jOP THEN
jmp ELSE
THEN:
...statements1...
jmp ENDIF
ELSE:
...statements2...
ENDIF:
Repeat/Until Loop
REPEAT
...statements...
UNTIL (op1 OP op2)
----------------------------
REPEAT:
...statements...
WHILE:
cmp op1, op2
jOP ENDREPEAT
jmp REPEAT
ENDREPEAT:
Do/While Loop
DO
...statements...
WHILE (op1 OP op2)
----------------------------
DO:
...statements...
WHILE:
cmp op1, op2
jOP DO
ENDWHILE:
Switch/Select Case
SWITCH (SELECTOR)
BEGIN
case VALUE1 : ...statements1...
BREAK
case VALUE2 : ...statements2...
BREAK
default : ...default_statements...
END
----------------------------
SWITCH:
cmp SELECTOR, VALUE1
je CASE_VALUE1
cmp SELECTOR, VALUE2
je CASE_VALUE2
jmp CASE_DEFAULT
CASE_VALUE1:
...statements1...
jmp ENDSWITCH
CASE_VALUE2
...statements2...
jmp ENDSWITCH
CASE_DEFAULT:
...default_statements...
END_SWITCH:
For Loop
FOR (index = start_value -> stop_value) DO
...statements...
ENDFOR
----------------------------
mov index, start_value
FOR:
cmp index, stop_value
jl DO
jmp ENDFOR
DO:
...statements...
inc index
jmp FOR
ENDFOR:
Κάνε ένα σχόλιο τώρα (όσο προλαβαίνεις...)