World: r4wp
[#Red] Red language group
older newer | first last |
PeterWood 25-Feb-2012 [42x2] | I don't believe Comment is a function in Red/System as it is in REBOL. I think it is more like a compiler directive. |
A block will work with the compiler but not the pre-processor because the complier is working with loaded REBOL values whereas the pre-processor is probably working with string data. | |
DocKimbel 25-Feb-2012 [44] | Kaj: could you replace `print` by `putchar` in the Mandelbrot bench, so it is equivalent to the C version? (Not sure it would change much the timings, but at least, the sources will be equivalent). `print newline` would then become `putchar lf` |
Kaj 25-Feb-2012 [45x3] | In earlier tests it made no difference, but it may now because the times are small. Better test that without printing at all |
A better way would be to increase the number of iterations | |
The preprocessor is block oriented now, isn't it? | |
DocKimbel 25-Feb-2012 [48x3] | Yes it is. |
To be more precise, there's a string stage and a block stage in the preprocessor. All the compiler directive are processed at the block stage. The string stage is just a front-end to handle R2-incompatible syntax, like the Red/System hex notation, and count source lines. | |
Kaj: do you know why __libc_csu_init and __libc_csu_fini are not defined in libc in Linux? How am I supposed to pass them to __libc_start_main if I can't access them? | |
Andreas 25-Feb-2012 [51] | Don't pass them. |
DocKimbel 25-Feb-2012 [52] | Isn't the libc doing important initialization and clean-up in these two functions? |
Andreas 25-Feb-2012 [53] | Nope, they can safely be NULL. |
DocKimbel 25-Feb-2012 [54] | __libc_start_main by itself is not doing much work, just a few calls and some global var init (like __environ). When I disassemble a C binary, these two calls are doing a lot of work. |
Andreas 25-Feb-2012 [55x7] | well, __libc_csu_init and __libc_csu_fini are functions that are linked by gcc into the generated executable. |
__libc_csu_init calls _init which in turn calls two more functions: call_gmon_start and __do_global_ctors_aux | |
call_gmon_start is support for the gnu profiler | |
__do_global_ctors_aux is for traversing ELF "constructors" (stored in a .CTORS section) which are then rnu | |
run* | |
as red/s neither supports elf ctors/dtors nor gprof, none if this should be needed | |
(again, all of the above are functions linked into the program binary by gcc) | |
DocKimbel 25-Feb-2012 [62] | okay, thanks for checking that. |
Andreas 25-Feb-2012 [63] | i'm pretty sure none of that is needed for actual glibc setup |
DocKimbel 25-Feb-2012 [64x2] | New commit pushed to `libc-init` branch, new simplified and more conforming way to init libc (at least I hope). |
I need to add support for Syllable, I have the right doc from Kaj for that, so no problem. For Darwin, I would need the right stack layout description on starting a new process, I haven't found yet a recent and official description for that, just a lost page in google's cache from 2009: http://webcache.googleusercontent.com/search?q=cache:4zQ0NwtOKdsJ:blogs.embarcadero.com/eboling/2009/10/13/5620+MacOSX+stack+layout+on+start&cd=4&hl=fr&ct=clnk&gl=fr | |
Andreas 25-Feb-2012 [66x2] | from that doc, the osx stack layout looks identical to linux/elf |
(so that should be easy to try) | |
DocKimbel 25-Feb-2012 [68] | identical from the main() POV, but I'm not sure that's the right kernel stack layout before libc is initialized. |
Andreas 25-Feb-2012 [69] | in that doc, it's not describing the stack for main() but the stack layout as setup for the entry point ("_start") |
DocKimbel 26-Feb-2012 [70x2] | Yes, that's what I am after. |
_start emulation | |
Andreas 26-Feb-2012 [72x2] | yep |
so osx looks just like linux :) | |
DocKimbel 26-Feb-2012 [74] | Okay, libc-init is now working fine for Linux and conforming to Gcc ABI. Once again, man has won over the machine, but I wonder how many neurons were killed both in my and Andreas brain during the battle...;-) |
GrahamC 26-Feb-2012 [75] | the reverse ... you probably grew a few :) |
Kaj 26-Feb-2012 [76x2] | It's a loosing battle |
The documentation seems to describe that when you write a floating point constant, it will be a float32! if it fits. However, it turns out that it is interpreted as float64! | |
Andreas 26-Feb-2012 [78x3] | Indeed, the spec is misleading here. All literals are float64!, float32! has no literal form. |
So the only way to construct a float32! from a literal, is by casting (`as float32!`) from a float64! literal. | |
(So it's propapbly best to remove the "syntax" section in the float32! spec and add a note describing the above.) | |
DocKimbel 26-Feb-2012 [81x2] | Agreed. |
Doc fixed. | |
Kaj 26-Feb-2012 [83] | I found another freak bug |
DocKimbel 26-Feb-2012 [84] | ah? |
Kaj 26-Feb-2012 [85] | In the tracker |
DocKimbel 26-Feb-2012 [86] | Kaj: proper libc init code added for Syllable. It works fine on my Syllable VM. |
Kaj 26-Feb-2012 [87] | That is great, thanks! |
Pekr 27-Feb-2012 [88] | Doc - so your sister tweets about the Red development? Cool :-) |
MagnussonC 27-Feb-2012 [89] | Why not delete the Twitter message if it was an error? |
GrahamC 27-Feb-2012 [90] | Good movie? |
Andreas 27-Feb-2012 [91] | Behold, an OpenGL triangle rendered by a Red/System program: http://earl.strain.at/share/reds-opengl-triangle-20120227.png |
older newer | first last |