World: r4wp
[#Red] Red language group
older newer | first last |
BrianH 7-Feb-2013 [5469] | Some optimizations will be very difficult or impossible to do if Red/System is used as the intermediate language, because those optimizations sometimes depend on the semantic model of the intermediate language, and Red/System doesn't have the semantic model of a compiler intermediate language. Optimization is hard work and people get PHDs for doing it. We can hope to catch up with modern C compilers, but don't expect it. One advantage is that Red is a high-level-enough language that an optimizer can make assumptions that a C compiler can't, so it is possible that we could get better code - it depends on the language and how much time we want to allocate on optimization. |
Bo 7-Feb-2013 [5470] | I'm feeling nostalgic. I used to hand-craft machine code on the 6502/6510 series of processors back in the 80's, so I have an idea of what you're talking about. There are some pretty neat tricks you can do when you're dealing with memory addresses directly. I crafted more than one self-modifying program to squeeze every bit of computing power out of a processor. I know that a lot of that ability has been removed by protected memory and abstraction, though. |
Bo 8-Feb-2013 [5471] | Kaj, now that I've had a chance to do some work with Red/System, it's amazing to me how much work you've already done on adding features! Here's something that I think would really help out a lot of us who want to make use of all your hard work. Would it be hard to create http://red.esperconsultancy.nl/index.htmlwith a link to all the Red stuff you've done? The only way I found what I needed to download was by searching through AltME for links, and had to manually enter in things like Red-common, Red-C-library, Red-cURL, Red-GTK, etc. |
Kaj 8-Feb-2013 [5472x6] | Thanks. A website is planned, but I haven't gotten around to it yet. I figure the time is better spent doing Red work |
What I've done so far is the download.r script: | |
http://red.esperconsultancy.nl/Red-test/dir?ci=tip | |
If you combine it with Fossil, it will set up your entire environment automatically | |
It will also auto-update all bindings to new versions | |
Have you seen my 6502 emulator in Red/System yet? :-) | |
Bo 8-Feb-2013 [5478] | I saw that you wrote a 6502 emulator, but haven't had time to look at it yet. Sounds like a fun project! |
Kaj 8-Feb-2013 [5479] | It is. :-) If you run the download.r script, you'll get it automatically |
Bo 8-Feb-2013 [5480x2] | Recalling from the days when I didn't have an assembler, I had most of the decimal equivalents of the commands remembered because I input values into memory manually when I was writing code. Going back in my brain 20 years, I believe LDA (Load the accumulator) was 169. :-) |
So 'with in Red/System is like 'context in R2? | |
Kaj 8-Feb-2013 [5482x3] | It's more like USE. CONTEXT exists as such in Red/System, but it's a compile time namespace instead of a runtime object |
You first define a CONTEXT, then you can use it with WITH, or path notation | |
You're right about LDA #. :-) It's also $A9. I had the same problem, wrote a disassembler in Atari BASIC until I could get hold of an assembler, so also have a considerable part of my brain dedicated to such numbers :-) | |
Bo 8-Feb-2013 [5485x2] | With the following code: #include %GTK.reds with gdk [ err: declare struct! [value [g/g-error!]] myimg: load-image "image.jpg" err ] I get the following error: *** Compilation Error: invalid literal syntax: [value [g/g-error!]] If I change it to: err: declare struct! [value [c-string!]] I get the following error: *** Compilation Error: argument type mismatch on calling: gdk/load-image *** expected: [struct! [value [g/g-error!]]], found: [struct! [value [c-string!]]] |
What am I missing? | |
Kaj 8-Feb-2013 [5487x2] | You can't use path notation on types. I've been trying to coerce Doc into implementing that, but he doesn't want to. :-/ |
So you have to use an extra WITH g [...]. You can combine that as WITH [gdk g] [...] | |
Bo 8-Feb-2013 [5489] | Aha! That did the trick! |
Kaj 8-Feb-2013 [5490x3] | By the way, if you only use images, you could do with including only GDK.reds. That would cut down on the dependencies |
Instead of your struct definition, you can use g-error-reference! which is already defined in GLib.reds | |
There's an example of using load-image in GTK.reds in the icon function | |
Bo 8-Feb-2013 [5493x4] | Thanks! When I use load-image, it looks like it is returning a pointer. Is that correct? |
For instance: 00DFD2B8 | |
If 'load-image returns a pointer, how do I know when I have reached the end of the image? | |
Better yet, assuming 'load-image returns a pointer, how do I access the first memory location referenced by the pointer? | |
Kaj 8-Feb-2013 [5497x3] | See the function spec in GDK.reds. It returns a pointer to an image! struct, so if you want to access the image internally, you have to go by that struct definition |
As you can see in the same file, I haven't finished the definition of that struct, because I don't have to look inside the image | |
What is your goal? | |
Kaj 9-Feb-2013 [5500] | Doc, could you bring lex-scope up to date with master? Then I can start testing it |
DocKimbel 9-Feb-2013 [5501] | Done. |
Kaj 9-Feb-2013 [5502] | Thanks! Been anxiously awaiting those fixes |
DocKimbel 9-Feb-2013 [5503] | I'm working on fixing #405 too in the lex-scope branch. Once that done, I will merge it in master if there is no regression. |
Kaj 9-Feb-2013 [5504] | I figured so |
DocKimbel 9-Feb-2013 [5505] | I might add #374 too the list too as it is related to scoping. |
Kaj 9-Feb-2013 [5506x4] | I hoped so :-) |
No build regressions in a full build run | |
Oddly, there's a build regression in a GTK program just for Syllable, which is not even a valid combination | |
I can't replicate it | |
Bo 10-Feb-2013 [5510] | I want to be able to compare two images pixel-by-pixel. |
Kaj 10-Feb-2013 [5511x4] | Ah, that's relatively easy, because you don't have to know the image format. At least not if you can compare byte values instead of strict pixels |
So you only have to look in the GDK/GLib headers to finish the image! struct definition enough to know the data length | |
Have to run | |
Do you only want two know if two images are the same? Then why not just read the files and compare them? | |
Bo 10-Feb-2013 [5515] | Actually, I want to know which pixels are different between the two images. Thanks for the tips! |
Kaj 10-Feb-2013 [5516x2] | You'd have to know GDK's internal image format, then |
Perhaps there are more suitable functions in Oldes' ImageMagick binding | |
Bo 10-Feb-2013 [5518] | I'll take a look. |
older newer | first last |