If you need help, try to find the answer through the following path: `Help` in the console ⇒ [Red by Example](https://www.red-by-example.org/) ⇒ [Official Red Docs](https://github.com/red/docs/blob/master/en/SUMMARY.adoc) ⇒ [Rebol Core Manual](http://www.rebol.com/docs/core23/rebolcore.html ⇒ [Red Wiki](https://github.com/red/red/wiki ⇒ Net search "redlang + your-question" ⇒ Ask us, we are here to help!
To create a function that returns unset! instead of
a traditional return value, use exit.
>> example: func [value] [value]
== func [value][value]
>> example "value"
== "value"
>> example: func [value] [value exit]
== func [value][value exit]
>> example "value"
>>
>> type? example "value"
== unset!
>>
unset!
in general, and why it exists?
unset!
there would be a hole in the language, several fundamental semantic rules would be collapsing, e.g. reduce [1 print ""] => [1]
(reducing 2 expressions would return 1 expression).
xmm[0-7]
registers (currently this feature limited to IA32)?system/fpu
and floating-point bit diddling will do?print system/fpu/type
returns 1
, honestly I don't know how to interpret it :( (see R/S specs). Does it mean x87 FPU or SSE?multi-channel commands
you're referring to).@dockimbel thanks Nenad!
By "multi-channel" I meant instructions which use multiple processing units at once (frankly I'm not completely sure what I'm talking about :D guh, noobiness). I think in real worlds it's called parallelism ;) Perhaps what I want in my case is something that can be considered "costly" operation which fully loads primary system bus and avoids caching mechanism, like SIMD MOVNTDQ
instruction.
About codebase: are there any tips for newcomers on how to navigate it? Sometimes I know that my answer is in the sources (like with fpu/type
above), but I'm not sure where to find it :(
grep
is your friend on Unix, or any equivalent feature in your Code editor. I have a "Find in files" feature (<=> grep
) in my main code editor, which I use dozens of time everyday to navigate through the source code.
make RAM bus very busy
should be achieved by any tight loop intensively reading/writing 32-bit values in memory (until we get 64-bit support). Such operations will go through the caches, there is no specific cache control instructions emitted by the compiler. Such optimizations are planned for 2.0.