From: cross@spitfire.i.gajendra.net   
      
   In article <1084ojj$95kl$1@dont-email.me>,   
   Chris Townley wrote:   
   >On 20/08/2025 16:03, Dan Cross wrote:   
   >> In article <1082lks$3nmtt$2@dont-email.me>,   
   >> Chris Townley wrote:   
   >>> [snip]   
   >>> Interestingly I have just come across an old bit of DEC Basic code:   
   >>>   
   >>> REPORT.ONLY = W.S4 = "R" ! Global flag   
   >>>   
   >>> I know what it does, but I would wrapped the knuckles of any programmer   
   >>> who did that on my shift!   
   >>   
   >> Not knowing DEC BASIC, am I correct in guessing that this   
   >> assigns the boolean result of comparing `W.S4` with the string   
   >> "R" to `REPORT.ONLY`?   
   >   
   >Correct, but I would have surrounded the comparison with brackets, or   
   >used an IF statement.   
      
   Indeed!   
      
   >Not quite as bad as a colleague who found source code file for a   
   >function, that ended with an UNLESS Z   
   >Z was a global not mentioned in the source file! Try searching a massive   
   >codebase for Z!   
      
   Eek.   
      
   In the Plan 9 kernel (https://9p.io/sys/doc/9.html), the symbol   
   `m` refers to a pointer to the local "Mach" (basically, a   
   per-CPU data structure).   
      
   `up` is similarly a symbol that refers to the current process   
   context on the current CPU.   
      
   In the ARM version of that kernel, these are "extern register"   
   variables understood by the compiler, that are preserved on exit   
   from, and restored on entry to, the kernel. To understand   
   exactly which register corresponds to which variable requires   
   examining compiler internals and the way that the compiler   
   (implicitly) allocates them to such variables. "Good luck!"   
      
    - Dan C.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|