Data update

This commit is contained in:
Ingy döt Net 2026-02-01 16:33:20 -08:00
parent 5150844a7d
commit 4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions

View file

@ -16,54 +16,53 @@ iValeur: .skip 4 @ reserve 4 bytes in memory
.text
.global main
main:
main:
ldr r0,=szMessage @ adresse of message short program
bl affichageMess @ call function
@ or
ldr r0,iAdrszMessage @ adresse of message big program (size code > 4K)
bl affichageMess @ call function
@ or
ldr r0,iAdrszMessage @ adresse of message big program (size code > 4K)
bl affichageMess @ call function
ldr r1,=iValDeb @ adresse of variable -> r1 short program
ldr r0,[r1] @ value of iValdeb -> r0
ldr r1,iAdriValDeb @ adresse of variable -> r1 big program
ldr r0,[r1] @ value of iValdeb -> r0
/* set variables */
ldr r1,=iValeur @ adresse of variable -> r1 short program
str r0,[r1] @ value of r0 -> iValeur
ldr r1,iAdriValeur @ adresse of variable -> r1 big program
str r0,[r1] @ value of r0 -> iValeur
ldr r1,=iValDeb @ adresse of variable -> r1 short program
ldr r0,[r1] @ value of iValdeb -> r0
ldr r1,iAdriValDeb @ adresse of variable -> r1 big program
ldr r0,[r1] @ value of iValdeb -> r0
/* set variables */
ldr r1,=iValeur @ adresse of variable -> r1 short program
str r0,[r1] @ value of r0 -> iValeur
ldr r1,iAdriValeur @ adresse of variable -> r1 big program
str r0,[r1] @ value of r0 -> iValeur
/* end of program */
mov r0, #0 @ return code
mov r7, #EXIT @ request to exit program
swi 0 @ perform the system call
iAdriValDeb: .int iValDeb
iAdriValeur: .int iValeur
iAdriValDeb: .int iValDeb
iAdriValeur: .int iValeur
iAdrszMessage: .int szMessage
iAdrszRetourLigne: .int szRetourLigne
iAdrszRetourLigne: .int szRetourLigne
/******************************************************************/
/* affichage des messages avec calcul longueur */
/******************************************************************/
/* r0 contient l adresse du message */
affichageMess:
push {fp,lr} /* save des 2 registres */
push {r0,r1,r2,r7} /* save des autres registres */
mov r2,#0 /* compteur longueur */
1: /*calcul de la longueur */
push {fp,lr} /* save des 2 registres */
push {r0,r1,r2,r7} /* save des autres registres */
mov r2,#0 /* compteur longueur */
1: /*calcul de la longueur */
ldrb r1,[r0,r2] /* recup octet position debut + indice */
cmp r1,#0 /* si 0 c est fini */
beq 1f
add r2,r2,#1 /* sinon on ajoute 1 */
b 1b
1: /* donc ici r2 contient la longueur du message */
mov r1,r0 /* adresse du message en r1 */
mov r0,#STDOUT /* code pour écrire sur la sortie standard Linux */
cmp r1,#0 /* si 0 c est fini */
beq 1f
add r2,r2,#1 /* sinon on ajoute 1 */
b 1b
1: /* donc ici r2 contient la longueur du message */
mov r1,r0 /* adresse du message en r1 */
mov r0,#STDOUT /* code pour écrire sur la sortie standard Linux */
mov r7, #WRITE /* code de l appel systeme 'write' */
swi #0 /* appel systeme */
pop {r0,r1,r2,r7} /* restaur des autres registres */
pop {fp,lr} /* restaur des 2 registres */
bx lr /* retour procedure */
pop {r0,r1,r2,r7} /* restaur des autres registres */
pop {fp,lr} /* restaur des 2 registres */
bx lr /* retour procedure */

View file

@ -1,3 +0,0 @@
The_Address : System.Address;
I : Integer;
The_Address := I'Address;

View file

@ -1,2 +0,0 @@
I : Integer;
for I'Address use 16#A100#;

View file

@ -1,3 +0,0 @@
I : Integer;
J : Integer;
for I'Address use J'Address;

View file

@ -1,6 +1,6 @@
use std, array (: array.arg also defines pointer operators :)
use std, array (: array.arg also defines pointer operators :)
let var = 42
let ptr = &var (: value of ptr is address of var :)
print var (: prints 42 :)
(*ptr)++ (: increments value pointed by ptr :)
print var (: prints 43 :)
let ptr = &var (: value of ptr is address of var :)
print var (: prints 42 :)
(*ptr)++ (: increments value pointed by ptr :)
print var (: prints 43 :)

View file

@ -1,3 +1,3 @@
use std, array
=:mac:= -> int& { * (0x400000 as int*) }
printf "%x\n" mac (: may crash depending on operating system :)
printf "%x\n" mac (: may crash depending on operating system :)

View file

@ -1,7 +0,0 @@
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ptr USAGE POINTER.
01 var PIC X(64).
PROCEDURE DIVISION.
SET ptr TO ADDRESS OF var.

View file

@ -1,17 +0,0 @@
OCOBOL*> Rosetta Code set address example
*> tectonics: cobc -x setaddr.cob && ./setaddr
IDENTIFICATION DIVISION.
PROGRAM-ID. setaddr.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 prealloc PIC X(8) VALUE 'somedata'.
01 var PIC X(8) BASED.
PROCEDURE DIVISION.
SET ADDRESS OF var TO ADDRESS OF prealloc
DISPLAY var END-DISPLAY
*> 'somedata'
GOBACK.
END PROGRAM setaddr.

View file

@ -2,13 +2,13 @@ MODULE AddressVar;
IMPORT SYSTEM,StdLog;
VAR
x: INTEGER;
x: INTEGER;
PROCEDURE Do*;
BEGIN
StdLog.String("ADR(x):> ");StdLog.IntForm(SYSTEM.ADR(x),StdLog.hexadecimal,8,'0',TRUE);StdLog.Ln
StdLog.String("ADR(x):> ");StdLog.IntForm(SYSTEM.ADR(x),StdLog.hexadecimal,8,'0',TRUE);StdLog.Ln
END Do;
BEGIN
x := 10;
x := 10;
END AddressVar.

View file

@ -45,13 +45,13 @@ END
SUB MainHandler
SELECT @CLASS
SELECT @CLASS
CASE @IDCLOSEWINDOW
CASE @IDCLOSEWINDOW
Close=1
Close=1
ENDSELECT
ENDSELECT
RETURN

View file

@ -1,7 +1,7 @@
var
i: integer;
p: ^integer;
i: integer;
p: ^integer;
begin
p := @i;
writeLn(p^);
p := @i;
writeLn(p^);
end;

View file

@ -1,4 +1,4 @@
var
crtMode: integer absolute $0040;
str: string[100];
strLen: byte absolute str;
crtMode: integer absolute $0040;
str: string[100];
strLen: byte absolute str;

View file

@ -2,26 +2,26 @@ extends MainLoop
func _process(_delta: float) -> bool:
var a := Node.new()
var b := Node.new()
var a := Node.new()
var b := Node.new()
# a and b are different objects with different RIDs
print(a.get_instance_id())
print(b.get_instance_id())
# a and b are different objects with different RIDs
print(a.get_instance_id())
print(b.get_instance_id())
assert(a != b)
assert(a.get_instance_id() != b.get_instance_id())
assert(a != b)
assert(a.get_instance_id() != b.get_instance_id())
# Set b to refer to the same object as a
b.free()
b = a
# Set b to refer to the same object as a
b.free()
b = a
# a and b are now the same object and have the same RID
print(a.get_instance_id())
print(b.get_instance_id())
# a and b are now the same object and have the same RID
print(a.get_instance_id())
print(b.get_instance_id())
assert(a == b)
assert(a.get_instance_id() == b.get_instance_id())
assert(a == b)
assert(a.get_instance_id() == b.get_instance_id())
a.free()
return true # Exit
a.free()
return true # Exit

View file

@ -1,32 +1,32 @@
package main
import (
"fmt"
"unsafe"
"fmt"
"unsafe"
)
func main() {
myVar := 3.14
myPointer := &myVar
fmt.Println("Address:", myPointer, &myVar)
fmt.Printf("Address: %p %p\n", myPointer, &myVar)
myVar := 3.14
myPointer := &myVar
fmt.Println("Address:", myPointer, &myVar)
fmt.Printf("Address: %p %p\n", myPointer, &myVar)
var addr64 int64
var addr32 int32
ptr := unsafe.Pointer(myPointer)
if unsafe.Sizeof(ptr) <= unsafe.Sizeof(addr64) {
addr64 = int64(uintptr(ptr))
fmt.Printf("Pointer stored in int64: %#016x\n", addr64)
}
if unsafe.Sizeof(ptr) <= unsafe.Sizeof(addr32) {
// Only runs on architectures where a pointer is <= 32 bits
addr32 = int32(uintptr(ptr))
fmt.Printf("Pointer stored in int32: %#08x\n", addr32)
}
addr := uintptr(ptr)
fmt.Printf("Pointer stored in uintptr: %#08x\n", addr)
var addr64 int64
var addr32 int32
ptr := unsafe.Pointer(myPointer)
if unsafe.Sizeof(ptr) <= unsafe.Sizeof(addr64) {
addr64 = int64(uintptr(ptr))
fmt.Printf("Pointer stored in int64: %#016x\n", addr64)
}
if unsafe.Sizeof(ptr) <= unsafe.Sizeof(addr32) {
// Only runs on architectures where a pointer is <= 32 bits
addr32 = int32(uintptr(ptr))
fmt.Printf("Pointer stored in int32: %#08x\n", addr32)
}
addr := uintptr(ptr)
fmt.Printf("Pointer stored in uintptr: %#08x\n", addr)
fmt.Println("value as float:", myVar)
i := (*int32)(unsafe.Pointer(&myVar))
fmt.Printf("value as int32: %#08x\n", *i)
fmt.Println("value as float:", myVar)
i := (*int32)(unsafe.Pointer(&myVar))
fmt.Printf("value as int32: %#08x\n", *i)
}

View file

@ -1,34 +1,34 @@
module checkVarptr {
declare GetMem8 lib "msvbvm60.GetMem8" {Long addr, Long retValue}
long long x=1234567812345678&&, z
dim k(2,2,2) as long long
call GetMem8(VarPtr(x), VarPtr(z))
call GetMem8(VarPtr(x), VarPtr(k(1,0,1)))
print z=x
print k(1,0,1)=x
link z to m
print VarPtr(z)=VarPtr(m)
checkref(&z)
sub checkref(&p)
print VarPtr(z)=VarPtr(p)
end sub
declare GetMem8 lib "msvbvm60.GetMem8" {Long addr, Long retValue}
long long x=1234567812345678&&, z
dim k(2,2,2) as long long
call GetMem8(VarPtr(x), VarPtr(z))
call GetMem8(VarPtr(x), VarPtr(k(1,0,1)))
print z=x
print k(1,0,1)=x
link z to m
print VarPtr(z)=VarPtr(m)
checkref(&z)
sub checkref(&p)
print VarPtr(z)=VarPtr(p)
end sub
}
checkVarptr
module checkVarptr {
// Using byref at GemMem8 signature
declare GetMem8 lib "msvbvm60.GetMem8" {long &addr, long &retValue}
declare PutMem8 lib "msvbvm60.PutMem8" {long &addr, retValue as long long}
long long x=1234567812345678&&, z
dim k(2,2,2) as long long
call GetMem8(&x, &z)
call GetMem8(&x, &k(1,0,1))
print z=x
print k(1,0,1)=x
checkref(&z)
print z=987654321987654321&&
sub checkref(&p)
print VarPtr(z)=VarPtr(p)
call PutMem8(&p, 987654321987654321&&)
end sub
// Using byref at GemMem8 signature
declare GetMem8 lib "msvbvm60.GetMem8" {long &addr, long &retValue}
declare PutMem8 lib "msvbvm60.PutMem8" {long &addr, retValue as long long}
long long x=1234567812345678&&, z
dim k(2,2,2) as long long
call GetMem8(&x, &z)
call GetMem8(&x, &k(1,0,1))
print z=x
print k(1,0,1)=x
checkref(&z)
print z=987654321987654321&&
sub checkref(&p)
print VarPtr(z)=VarPtr(p)
call PutMem8(&p, 987654321987654321&&)
end sub
}
checkVarptr

View file

@ -1,18 +1,11 @@
-- 7 Aug 2025
include Settings
-- 23 Aug 2025
include Setting
say 'ADDRESS OF A VARIABLE'
say version
say
if Pos('Regina',version) > 0 then
call Library
call Primes 10
call SysDumpVariables
call DumpVariables
exit
Library:
call RxFuncAdd 'SysLoadFuncs','RegUtil','SysLoadFuncs'
call SysLoadFuncs
return
include Math

View file

@ -2,7 +2,7 @@ a = 1
&a
function f(x) {
return(x+1)
return(x+1)
}
&f()

View file

@ -1,6 +1,6 @@
fn main() {
var := 42
address_of_var := &var // pointer to variable
println(&address_of_var) // reference
println(*address_of_var) // dereference a reference // 42
var := 42
address_of_var := &var // pointer to variable
println(&address_of_var) // reference
println(*address_of_var) // dereference a reference // 42
}