Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iocla:cursuri:capitol-07:demo:01 [2016/10/26 16:28]
laura.vasilescu [C to Assembly]
— (current)
Line 1: Line 1:
-===== 1. Variabile globale ===== 
  
-Dorim să înțelegem rolul variabilelor globale și să învățăm cum le putem folosi. 
- 
-==== C to Assembly ==== 
- 
-Vom scrie programe în C pe care le vom compila folosind consola MINGW pentru a putea observa assembly-ul generat. 
- 
-Deschideți consola MINGW. (''​C:​\MinGW\msys\1.0\msys.bat''​) 
- 
-<code c test.c> 
-#include <​stdio.h>​ 
- 
-int my_g = 1000; 
- 
-int main(void) 
-{ 
- return 0; 
-} 
-</​code>​ 
-Pentru generarea fișierului assembly folosiți: ''​gcc -S -O0 -masm=intel -o test.asm test.c''​.\\ 
-Observați următoarea secțiune: 
-<​code>​ 
-.globl _my_g 
- .data 
- .align 4 
-_my_g: 
- .long 1000 
-</​code>​ 
-Adăugați, pe rând, câte o variabilă globală de tip ''​char'',​ ''​short'',​ ''​long''​ și ''​long long''​.\\ 
-Ar trebui să observați ceva similar cu: 
-<​code>​ 
-.globl _my_hhg 
- .data 
-_my_hhg: 
- .byte 10 
-.globl _my_hg 
- .align 2 
-_my_hg: 
- .word 100 
-.globl _my_g 
- .align 4 
-_my_g: 
- .long 1000 
-.globl _my_lg 
- .align 4 
-_my_lg: 
- .long 10000 
-.globl _my_llg 
- .align 8 
-_my_llg: 
- .quad 100000 
-</​code>​ 
-<​hidden>​ 
-Variabilele apar în ordinea în care au fost definite, însă acest lucru nu e standard afaik. 
-</​hidden>​ 
- 
-<​hidden>​ 
-<​note>​ 
-Ar trebui să generăm direct de la C nasm? Fără gcc? Sintaxa o să fie ușor diferită la cum e mai sus.. Tu ce zici? 
-Pentru de la C la nasm am găsit asta https://​github.com/​diogovk/​c2nasm (dar zice că nu e purrfect) 
-</​note>​ 
-</​hidden>​ 
-==== SASM ==== 
iocla/cursuri/capitol-07/demo/01.1477488538.txt.gz · Last modified: 2016/10/26 16:28 by laura.vasilescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0