어떻게 효율적으로 어셈블러 코드를 작성하는

C 언어 변수의 개념이 있지만 편집은 없다. 바이트 수 메모리가 차지하는 변수 지정, 그것은 읽고 해당 주소를 작성하여 참조 할 수 있습니다, 우리는 C 언어와 어셈블리 코드로 작성 변수 이름과 같은 데이터 유형을 정의 할 수 있습니다. 주소의 변수 이름을 교체 한 후.
예를 들면

.section .rodata
	.LC0:.string "%d,%d\n"

.text
.global main
main:
	pushl %ebp
	movl %esp,%ebp
	
	subl $12,%esp
	movl $1,a1
	movl $2,b1
	
	pushl b1
	pushl a1
	pushl $.LC0
	call printf
	addl $12,%esp
	
	movl a1,%eax
	movl %eax,tmp
	movl b1,%eax
	movl %eax,a1
	movl tmp,%eax
	movl %eax,b1
	
	pushl b1
	pushl a1
	pushl $.LC0
	call printf
	addl $12,%esp
	
	movl $0,%eax
	leave
	ret

-4 (%의 EBP)에 A1, B1 어 -8 (%의 EBP) -12 (%의 EBP)에 TMP

.section .rodata
	.LC0:.string "%d,%d\n"

.text
.global main
main:
	pushl %ebp
	movl %esp,%ebp
	
	subl $12,%esp
	movl $1,-4(%ebp)
	movl $2,-8(%ebp)
	
	pushl -8(%ebp)
	pushl -4(%ebp)
	pushl $.LC0
	call printf
	addl $12,%esp
	
	movl -4(%ebp),%eax
	movl %eax,-12(%ebp)
	movl -8(%ebp),%eax
	movl %eax,-4(%ebp)
	movl -12(%ebp),%eax
	movl %eax,-8(%ebp)
	
	pushl -8(%ebp)
	pushl -4(%ebp)
	pushl $.LC0
	call printf
	addl $12,%esp
	
	movl $0,%eax
	leave
	ret
그는 185 원저 출판 · 원의 찬양 (18) · 전망 (160) 000 +를

추천

출처blog.csdn.net/pk_20140716/article/details/103344905