June 2018 Update

This commit is contained in:
Ingy döt Net 2018-06-22 20:57:24 +00:00
parent ba8067c3b7
commit 22f33d4004
5278 changed files with 84726 additions and 14379 deletions

View file

@ -0,0 +1,69 @@
/* ARM assembly Raspberry PI */
/* program adrvar.s */
/* Constantes */
.equ STDOUT, 1
.equ WRITE, 4
.equ EXIT, 1
/* Initialized data */
.data
szMessage: .asciz "Hello. \n " @ message
szRetourLigne: .asciz "\n"
iValDeb: .int 5 @ value 5 in array of 4 bytes
/* No Initialized data */
.bss
iValeur: .skip 4 @ reserve 4 bytes in memory
.text
.global 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
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
iAdrszMessage: .int szMessage
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 */
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 */
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 */

View file

@ -1,4 +1,5 @@
var x = 12
var pointer = ptr(x) # get pointer
print pointer # print address
pointer.set 0xFFFE # set the address
var num = 12
var pointer = ptr(num) # get pointer
print pointer # print address
unsafe: # bad idea!
pointer.addr = 0xFFFE # set the address

View file

@ -1 +1,3 @@
int& i = *(int*)0xA100;
#include <memory>
int i;
auto address_of_i = std::addressof(i);

View file

@ -1,5 +1 @@
static union
{
int i;
int j;
};
int& i = *(int*)0xA100;

View file

@ -1,2 +1,3 @@
int i;
int& j = i;
#include <new>
struct S { int i = 0; S() {} };
auto& s = *new (reinterpret_cast<void*>(0xa100)) S;

View file

@ -0,0 +1,5 @@
static union
{
int i;
int j;
};

View file

@ -0,0 +1,2 @@
int i;
int& j = i;

View file

@ -0,0 +1,4 @@
#include <cstring>
inline float read_as_float(int const& i) { float f; memcpy(&f, &i, sizeof(f)); return f; }
int i = 0x0a112233;
float f = read_as_float(i);

View file

@ -1,4 +1,4 @@
// Kotlin/Native Technology Preview
// Kotlin Native v0.5
import kotlinx.cinterop.*

View file

@ -0,0 +1,14 @@
tvar: A
10 to A
tvar: B
#A to B
B .s
[1] (Variable) #A
>ok
12 B put
A .s
[1] (Integer) 12
[2] (Variable) #A
>ok

View file

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

View file

@ -0,0 +1 @@
(%ADDRESS-OF X)