Page 1 of 1
			
				something that we lost...
				Posted: Sun Aug 16, 2009 6:08 pm
				by djsilence
				Hi... I'm thinking of one project to added to my os (I mean FreeType) and got thought: isn't a time to write malloc, calloc, realloc, dealloc, fopen, fseek (after filesystem, which I already did) etc. functions (I mean standard C++ library like stdio) ?
			 
			
			
				Re: something that we lost...
				Posted: Sun Aug 16, 2009 9:43 pm
				by Andyhhp
				Writing a heap memory management library can be very tricky to do correctly.  There is nothing stopping you at this point writing the heap memory management functions.
I suggest you use libc as reference to help you avoid the pitfalls.
As for the rest (streams etc), there is more you need to be able to do first.  You need a way to buffer parts of files in memory as a bare minimum.  Also, some way to deal with stdin, stdout and stderr differently from normal files.
Also - on a picky point of information - stdio is a C library.  In C++, it is technically referenced as cstdio to denote the fact it is a C library and not a C++ one 
~Andrew
 
			 
			
			
				Re: something that we lost...
				Posted: Sun Aug 16, 2009 10:53 pm
				by ehenkes
				
			 
			
			
				Re: something that we lost...
				Posted: Sun Aug 16, 2009 11:06 pm
				by Andyhhp
				Wow - that looks like a fantastic tutorial.
I will read it when its not midnight
~Andrew
			 
			
			
				Re: something that we lost...
				Posted: Thu Aug 20, 2009 11:34 am
				by djsilence
				Yeah, that tutorial is great but it is written with GCC so has some problem with going down to VC++ (I mean GAS style of inline assembly, that gives us possibility to use all registers, and eip too. But VC++ asm don't know such register... and so on...)
And trying to run it I've got error that even James couldn't explain. 
Thanks.
 
			 
			
			
				Re: something that we lost...
				Posted: Fri Aug 21, 2009 7:15 am
				by Andyhhp
				There is no difference between GAS ans VC++ in terms of which registers you can access.  They both allow full and complete access to the x86 instruction set.
The two main differences are that GAS uses AT&T syntax while VC++ uses Intel(ish) which is the same as NASM already used so far.  The other is that GCC is far far better at optimizing around inserted asm.
~Andrew
			 
			
			
				Re: something that we lost...
				Posted: Fri Aug 21, 2009 9:49 am
				by djsilence
				try on. 
ex:
mov eip, eax
You'll get error @ undefined symbol
Neon wrote exactly what I wrote before (I asked him).

 
			 
			
			
				Re: something that we lost...
				Posted: Fri Aug 21, 2009 1:15 pm
				by Mike
				Hello,
There is no standard instruction for accessing eip. If an assembler allows access, it is a nonstandard extension. (Of course, there are standard 'tricks' that can be used to write or read eip.)
			 
			
			
				Re: something that we lost...
				Posted: Sat Aug 29, 2009 8:28 pm
				by Blasterman
				Mike wrote:Hello,
There is no standard instruction for accessing eip. If an assembler allows access, it is a nonstandard extension. (Of course, there are standard 'tricks' that can be used to write or read eip.)
Such as "push eip; pop eax" or "call geteip; geteip: pop eax" etc.