( Pontscho | 2014. 02. 06., cs – 20:44 )

Tenyleg ennyire problemas a szovegertes ? :) Nem az a problemam, h beszol a compiler, h konstanst adok vissza egy pointernel es ezert warningol, amiben igaza is van (mellesleg ha lekasztolom void *-ra, akkor meg warning sincs), hanem h utana kurta el a tortenetet. Gondolom az is megvolt, h szandekosan -O0-lal forditottam.

Csak a kedvedert:


aeryn:asd pontscho$ cat main.c
void *basz(void)
{
	return 1;
}
aeryn:asd pontscho$ gcc -c -o main.o main.c -O0 -Wall
main.c: In function 'basz':
main.c:4: warning: return makes pointer from integer without a cast
aeryn:asd pontscho$ otool -tv main.o
main.o:
(__TEXT,__text) section
_basz:
0000000000000000	pushq	%rbp
0000000000000001	movq	%rsp,%rbp
0000000000000004	movq	$0x0000000000000001,%rax
000000000000000e	movq	%rax,0xf0(%rbp)
0000000000000012	movq	0xf0(%rbp),%rax
0000000000000016	movq	%rax,0xf8(%rbp)
000000000000001a	movq	0xf8(%rbp),%rax
000000000000001e	popq	%rbp
000000000000001f	ret
aeryn:asd pontscho$

---

aeryn:asd pontscho$ cat main.c
void *basz(void)
{
	return (void *)1;
}
aeryn:asd pontscho$ gcc -c -o main.o main.c -O0 -Wall
aeryn:asd pontscho$ otool -tv main.o
main.o:
(__TEXT,__text) section
_basz:
0000000000000000	pushq	%rbp
0000000000000001	movq	%rsp,%rbp
0000000000000004	movq	$0x0000000000000001,%rax
000000000000000e	movq	%rax,0xf0(%rbp)
0000000000000012	movq	0xf0(%rbp),%rax
0000000000000016	movq	%rax,0xf8(%rbp)
000000000000001a	movq	0xf8(%rbp),%rax
000000000000001e	popq	%rbp
000000000000001f	ret
aeryn:asd pontscho$

---

aeryn:asd pontscho$ cat main.c 

#include <stdlib.h>

void *basz(void)
{
	return malloc(1);
}

aeryn:asd pontscho$ gcc -c -o main.o main.c -O0 -Wall
aeryn:asd pontscho$ otool -tv main.o
main.o:
(__TEXT,__text) section
_basz:
0000000000000000	pushq	%rbp
0000000000000001	movq	%rsp,%rbp
0000000000000004	subq	$0x10,%rsp
0000000000000008	movq	$0x0000000000000001,%rax
0000000000000012	movq	%rax,%rdi
0000000000000015	callq	0x0000001a
000000000000001a	movq	%rax,0xf0(%rbp)
000000000000001e	movq	0xf0(%rbp),%rax
0000000000000022	movq	%rax,0xf8(%rbp)
0000000000000026	movq	0xf8(%rbp),%rax
000000000000002a	addq	$0x10,%rsp
000000000000002e	popq	%rbp
000000000000002f	ret
aeryn:asd pontscho$ 

Capisce? Szoval hagyjuk mar ezt a faszsagot es kezdjunk mar el gondolkodni is vegre.

---
pontscho / fresh!mindworkz