Tuesday, February 26, 2013

SCC3. SmallC - krátky program

V minulom článku sme skúsili interaktívny režim SmallC. Teraz skúsme kratučký program a pozrieme sa na vygenerovaný kód. Spustime kompiler príkazom scc8080 -t
Zadajme:
int gla, glb = 3;
char msg[]="hello world", glc, *glpc;

method_a () {
   gla = glb;
   glc = 'x';
   glpc = msg;
}
Dostaneme:
; gla = glb;
lhld glb
shld gla
do primárneho registrového páru sa načítala hodnota na adrese glb a uložila sa na adresu gla
; glc = 'x';
lxi h,#120
mov a,l
sta glc
do HL sa načítalo 'x' čo je ASCII 120, všimnime si, že aj typ char sa načítava do registrového páru. Následne sa už správne uložila len hodnota z L do A a v poslednom kroku sa uložil A na adresu glc
; glpc = msg;
lxi h,msg
shld glpc
do HL sa načítala adresa začiatku poľa msg. V C sú stringy interpretované ako char array. Adresa poľa msg sa uložila na adresu glpc.

Na konci nasledujú deklarácie:
gla:
.dw #0
gla je int, má rezervované dva byte. Keďže nemá inicializačnú časť, bola mu defaultne daná hodnota 0
glb:
.dw #3
glb má hodnotu 3, presne ako má v inicializačnej časti
msg:
.db #104,#101,#108,#108,#111,#32,#119,#111,#114,#108
.db #100,#0
msg je pole bytov, inicializované na znaky hello world, ukončené 0.

No comments:

Post a Comment