LINUX.ORG.RU

История изменений

Исправление SMD, (текущая версия) :

Итак:
Сишный код(на большее фантазии не хватило)

cat test.c 
#include "stdio.h"

int main()
{
    printf("Test\n");
    return 0;
}
Асм от гцц 4.7.2(gcc -s test.c):
	.file	"test.c"
	.section	.rodata
.LC0:
	.string	"Test"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$.LC0, %edi
	call	puts
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (GNU) 4.7.2"
	.section	.note.GNU-stack,"",@progbits
Код от lcc-компилятора под архитектуру е2к(lcc -s test.c):
.section ".text"
.global $main
$main:
.ignore ld_st_style
.ignore strict_delay
 {
   disp %ctpr1, $printf
   setwd wsz = 0x8, nfx = 0x1
   setbn rsz = 0x3, rbs = 0x4, rcur = 0x0 
   getsp,0 _f32s,_lts1 0xfffffff0, %dr2
 }
   addd,0 0, [ _lts0 $.LC.00000000 ], %db[0]
   std,2,sm %dr2, 0, %db[0]
   wait ma_c = 0, fl_c = 0, ld_c = 0, st_c = 0, all_e = 0, all_c = 1
 {
   ipd 2
   call %ctpr1, wbs = 0x4 
 }
 {
   nop 5
   return %ctpr3
   adds,0 0, 0, %r0
 }
 {
   ct %ctpr3
   ipd 2
 }
.size $main, . - $main

	.weak	$elbrus_compiler_v1.17.04_Apr_12_2012
	.set	$elbrus_compiler_v1.17.04_Apr_12_2012, 0
.section ".rodata"
	.local	$.LC.00000000
	.type	$.LC.00000000, @object
	.size	$.LC.00000000, 0x6
	.align	1
$.LC.00000000:
	.ascii	"Test\n\000"
	.global	$printf

Исходная версия Deleted, :

Итак:
Сишный код(на большее фантазии не хватило)

cat test.c 
#include "stdio.h"

int main()
{
    printf("Test\n");
    return 0;
}
Асм от гцц 4.7.2:
	.file	"test.c"
	.section	.rodata
.LC0:
	.string	"Test"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$.LC0, %edi
	call	puts
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (GNU) 4.7.2"
	.section	.note.GNU-stack,"",@progbits
Код от lcc-компилятора под архитектуру е2к:
.section ".text"
.global $main
$main:
.ignore ld_st_style
.ignore strict_delay
 {
   disp %ctpr1, $printf
   setwd wsz = 0x8, nfx = 0x1
   setbn rsz = 0x3, rbs = 0x4, rcur = 0x0 
   getsp,0 _f32s,_lts1 0xfffffff0, %dr2
 }
   addd,0 0, [ _lts0 $.LC.00000000 ], %db[0]
   std,2,sm %dr2, 0, %db[0]
   wait ma_c = 0, fl_c = 0, ld_c = 0, st_c = 0, all_e = 0, all_c = 1
 {
   ipd 2
   call %ctpr1, wbs = 0x4 
 }
 {
   nop 5
   return %ctpr3
   adds,0 0, 0, %r0
 }
 {
   ct %ctpr3
   ipd 2
 }
.size $main, . - $main

	.weak	$elbrus_compiler_v1.17.04_Apr_12_2012
	.set	$elbrus_compiler_v1.17.04_Apr_12_2012, 0
.section ".rodata"
	.local	$.LC.00000000
	.type	$.LC.00000000, @object
	.size	$.LC.00000000, 0x6
	.align	1
$.LC.00000000:
	.ascii	"Test\n\000"
	.global	$printf