มาลองทำ Assembler กัน (Literal)
Literal
ลองดู code ภาษา C ข้างล่างนี้
int main()
{
char *msg = "ABC";
printf("%s\n", msg);
return 0;
}
เราจะแปลงมันเป็นภาษา assembly ได้แบบนี้
main:
VAR 1
REF msg 1
PVAR msg
PUSH literal0
STORE
PUSH literal1
PVAR msg
LOAD
PUSH printf
CALL
FVAR
PUSH 0
RETURN
literal0:
"ABC"
literal1: "%s\n"
printf:
...
สมมติว่า string "ABC" และ "%s\n" ใช้เนื้อที่ตัวละ 1 word เราจะได้ object code สุดท้ายแบบนี้
0000h: PUSH 0
0002h: PBASE
0004h: PUSH 1
0006h: SUB
0008h: PUSH 0024h
000Ah: STORE
000Ch: PUSH 0025h
000Eh: PBASE
0010h: PUSH 1
0012h: SUB
0014h: LOAD
0016h: PUSH 0026h
0018h: CALL
001Ah: PUSH 0
001Ch: MUL
001Eh: ADD
0020h: PUSH 0
0022h: RETURN
0024h: "ABC"
0025h: "%s\n"
0026h: ...
0 Comments:
Post a Comment
<< Home