June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -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 */
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1 +1,3 @@
|
|||
int& i = *(int*)0xA100;
|
||||
#include <memory>
|
||||
int i;
|
||||
auto address_of_i = std::addressof(i);
|
||||
|
|
|
|||
|
|
@ -1,5 +1 @@
|
|||
static union
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
};
|
||||
int& i = *(int*)0xA100;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
5
Task/Address-of-a-variable/C/address-of-a-variable-5.c
Normal file
5
Task/Address-of-a-variable/C/address-of-a-variable-5.c
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
static union
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
};
|
||||
2
Task/Address-of-a-variable/C/address-of-a-variable-6.c
Normal file
2
Task/Address-of-a-variable/C/address-of-a-variable-6.c
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
int i;
|
||||
int& j = i;
|
||||
4
Task/Address-of-a-variable/C/address-of-a-variable-7.c
Normal file
4
Task/Address-of-a-variable/C/address-of-a-variable-7.c
Normal 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);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
// Kotlin/Native Technology Preview
|
||||
// Kotlin Native v0.5
|
||||
|
||||
import kotlinx.cinterop.*
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
a = 1
|
||||
&a
|
||||
|
||||
function f(x) {
|
||||
return(x+1)
|
||||
}
|
||||
|
||||
&f()
|
||||
|
|
@ -0,0 +1 @@
|
|||
(%ADDRESS-OF X)
|
||||
Loading…
Add table
Add a link
Reference in a new issue