*
This commit is contained in:
parent
cdbec2b91f
commit
7a18fddeb4
3
SCR1.1/Meetgenda.sh
Executable file
3
SCR1.1/Meetgenda.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
Dernier_Repertoire=$pwd
|
||||||
|
cd ~/public_html/Meetgenda && git pull && cd $Dernier_Repertoire
|
20
SCR1.1/find_bigger_files.sh
Executable file
20
SCR1.1/find_bigger_files.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# A simple program to find
|
||||||
|
# in the active directory
|
||||||
|
# the bigger files.
|
||||||
|
|
||||||
|
if [[$# -ne 1]]
|
||||||
|
then
|
||||||
|
echo "Usage : ./$0 <FOLDER_NAME>"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
ls -l $1 > $($1_files.txt)
|
||||||
|
bigger_file=0
|
||||||
|
for ligne in $(<$1_files.txt)
|
||||||
|
do
|
||||||
|
echo "$ligne"
|
||||||
|
done
|
||||||
|
|
||||||
|
exit
|
||||||
|
|
22
SCR2.1/ngwalang-number-weight.s
Normal file
22
SCR2.1/ngwalang-number-weight.s
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
.equ SYS_EXIT ,93
|
||||||
|
.data
|
||||||
|
int: .word -1
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
adr x4, int
|
||||||
|
ldr w3, [x4]
|
||||||
|
sxtw x2, w3
|
||||||
|
mov x0, #0
|
||||||
|
loop: cbz x2, exit
|
||||||
|
tbz x2, #0, next
|
||||||
|
add x0, x0, x1
|
||||||
|
next: lsr x2, x2, #1
|
||||||
|
mov x1, 1
|
||||||
|
b loop
|
||||||
|
exit: mov x0, #0
|
||||||
|
mov w8,#SYS_EXIT
|
||||||
|
svc #0x0
|
||||||
|
.end
|
||||||
|
|
||||||
|
|
21
SCR2.1/number-xeight.s
Normal file
21
SCR2.1/number-xeight.s
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
.equ SYS_EXIT, 93
|
||||||
|
.data
|
||||||
|
int : .word 12
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
_start : adr x1, int
|
||||||
|
ldr w0,[x1] //n est dans w0
|
||||||
|
mov w1, #0 //res est dans w1
|
||||||
|
mov w2, #1 //i est dans w2
|
||||||
|
bcl: cmp w2, w0
|
||||||
|
b.gt fin
|
||||||
|
add w1,w1,w2
|
||||||
|
add w2,w2,#1
|
||||||
|
b bcl
|
||||||
|
fin: mov x0,x1
|
||||||
|
mov w8, #SYS_EXIT
|
||||||
|
svc #0
|
||||||
|
.end
|
||||||
|
|
||||||
|
|
||||||
|
|
178
SCR2.2/TP22/DOC/README.Debian
Normal file
178
SCR2.2/TP22/DOC/README.Debian
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
DNSSEC validation turned on by default as of BIND 9.8.1
|
||||||
|
-------------------------------------------------------
|
||||||
|
As of version 9.8.1.dfsg-1, BIND ships with DNSSEC validation turned on
|
||||||
|
by default. As the keys get changed over time, this means that a fresh
|
||||||
|
install of BIND will require that the admin manually upgrade bind.keys
|
||||||
|
to account for the change, before BIND will be able to resolve hosts in
|
||||||
|
DNSSEC validated zones.
|
||||||
|
|
||||||
|
|
||||||
|
Upgrading from BIND 8.X:
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
If you are upgrading an authoritative server from BIND 8.X, please install
|
||||||
|
the bind9-doc package and read /usr/share/doc/bind9-doc/misc/migration.gz,
|
||||||
|
which contains a set of notes from the BIND maintainers on what changed
|
||||||
|
that is likely to need your attention during an upgrade.
|
||||||
|
|
||||||
|
|
||||||
|
Upgrading from earlier bind9 packages:
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
If you installed an early version of the Debian bind9 packages, prior to
|
||||||
|
version 1:9.2.0-2 to be more precise, you may have an /etc/bind/rndc.conf
|
||||||
|
configuration file still on your system. There's nothing wrong with that,
|
||||||
|
and if you've explicitly configured keys for using rndc you may well want to
|
||||||
|
leave things exactly as they are!
|
||||||
|
|
||||||
|
However, since 9.2.0 BIND 9.X has supported an rndc.key file that both named
|
||||||
|
and rndc will read to obtain a shared key for rndc use against a daemon on
|
||||||
|
the same host. The rndc-confgen program will easily create a suitable key
|
||||||
|
file. To take advantage of this mechanism, you may want to:
|
||||||
|
|
||||||
|
remove the /etc/bind/rndc.conf file
|
||||||
|
remove the rndc key specification in the /etc/bind/named.conf file
|
||||||
|
|
||||||
|
rndc-confgen -r /dev/urandom -a
|
||||||
|
|
||||||
|
Alternatively, you can 'purge' the bind9 packages and reinstall them and you
|
||||||
|
will end up with the new behavior since it is now the default.
|
||||||
|
|
||||||
|
This is more secure than using a static key that isn't generated on a per-host
|
||||||
|
basis, and is an easy alternative to more complex key schemes if you only need
|
||||||
|
to use rndc to talk to named on the same host.
|
||||||
|
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
------------
|
||||||
|
|
||||||
|
I've had a report that lwresd, at least, fails to work with some recent 2.5
|
||||||
|
kernels. If you see something in your logs like
|
||||||
|
|
||||||
|
loading configuration from '/etc/bind/lwresd.conf'
|
||||||
|
none:0: open: /etc/bind/lwresd.conf: permission denied
|
||||||
|
|
||||||
|
Try rebuilding with --disable-linux-caps added to the configure call in the
|
||||||
|
rules file. I'm hoping this is a temporary problem in the 2.5 kernel series,
|
||||||
|
but we'll see.
|
||||||
|
|
||||||
|
|
||||||
|
Configuration Schema:
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The Debian BIND package ships with a config that will work for the majority
|
||||||
|
of leaf servers with no user input required.
|
||||||
|
|
||||||
|
The named configuration file named.conf is located in /etc/bind, so that all
|
||||||
|
static configuration files relating to bind are in one place. If you really
|
||||||
|
don't want named.conf in /etc/bind, then the best way to handle it is probably
|
||||||
|
to replace /etc/bind/named.conf with a symlink to the location you want to use.
|
||||||
|
You could also use an option to named in the init.d script, but that only works
|
||||||
|
for named, not for things like ndc.
|
||||||
|
|
||||||
|
Zone data files for the root servers, and the forward and reverse localhost
|
||||||
|
zones are also provided in /etc/bind.
|
||||||
|
|
||||||
|
The working directory for named is now /var/cache/bind. Thus, any transient
|
||||||
|
files generated by named, such as database files for zones the daemon is
|
||||||
|
secondary for, will be written to the /var filesystem, where they belong.
|
||||||
|
|
||||||
|
To make this work, the named.conf provided uses explicitly fully-qualified
|
||||||
|
pathnames to reference the files in /etc/bind.
|
||||||
|
|
||||||
|
Unlike previous BIND packages for Debian, the named.conf and provided db.*
|
||||||
|
files are tagged as conffiles. Thus, if you just want a "caching mostly"
|
||||||
|
server configuration for a server that does not need to be authoritative for
|
||||||
|
anything else, you can run the provided configuration as-is. If you want to
|
||||||
|
hack on named.conf, or even the init.d fragment, you can feel free to. Future
|
||||||
|
package upgrades will treat your configuration changes sanely, as all Debian
|
||||||
|
packages should.
|
||||||
|
|
||||||
|
While you are free to craft whatever structure you wish for servers which need
|
||||||
|
to be authoritative for additional zones, what we suggest is that you put the
|
||||||
|
db files for any zones you are master for in /etc/bind (perhaps even in a
|
||||||
|
subdirectory structure depending on complexity), using full pathnames in the
|
||||||
|
named.conf file. Any zones you are secondary for should be configured in
|
||||||
|
named.conf with simple filenames (relative to /var/cache/bind), so the data
|
||||||
|
files will be stored in BIND's working directory (defaults to /var/cache/bind).
|
||||||
|
Zones subject to automatic updates (such as via DHCP and/or nsupdate) should be
|
||||||
|
stored in /var/lib/bind, and specified with full pathnames.
|
||||||
|
|
||||||
|
|
||||||
|
Running Chroot'ed:
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Several users have asked for Debian BIND to run in a "chroot jail". There are
|
||||||
|
various issues associated with making this the default configuration for the
|
||||||
|
package in Debian. In the meantime, reasonable instructions on how to do
|
||||||
|
this yourself are available on the web from:
|
||||||
|
|
||||||
|
http://www.tldp.org/HOWTO/Chroot-BIND-HOWTO.html
|
||||||
|
|
||||||
|
|
||||||
|
Running Non-Root:
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Recent versions of named can be invoked with options that specify a non-root
|
||||||
|
user and/or group for named. Read the named man page for more information.
|
||||||
|
Note that when running named as a user other than root, it will not be able
|
||||||
|
to find new interfaces that appear dynamically, such as during a PCMCIA card
|
||||||
|
insertion, or if you're running some flavors of IPSEC and/or IP over IP
|
||||||
|
tunnels. If you cannot live with those limitations, feel free to edit the
|
||||||
|
/etc/init.d/bind9 script to change the invocation of named.
|
||||||
|
|
||||||
|
The default is now to run as the user 'bind' (which is automatically created
|
||||||
|
in the group 'bind', if it doesn't exist), unless named.conf has been changed.
|
||||||
|
To change this, edit /etc/default/bind9
|
||||||
|
|
||||||
|
Please note that 'ndc restart' doesn't honor all the original command line
|
||||||
|
options to named, so we explicitly don't use it in the init.d script provided
|
||||||
|
with the package, and you should be careful about using it if you decide to
|
||||||
|
run named non-root.
|
||||||
|
|
||||||
|
|
||||||
|
PPP Control Script:
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Unfortunately, 'ndc reload' will not honor any command line options that were
|
||||||
|
fed to named on the initial invocation. If you can live with that, and
|
||||||
|
want to wiggle your DNS configuration when your PPP link goes up or down, the
|
||||||
|
following script fragment from Francesco Potorti` <pot@gnu.org> may be helpful
|
||||||
|
to you:
|
||||||
|
|
||||||
|
I suggest adding this as bot /etc/ppp/ip-up.d/bind and
|
||||||
|
/etc/ppp/ip-down.d/bind:
|
||||||
|
|
||||||
|
================================================================
|
||||||
|
#!/bin/sh
|
||||||
|
if [ -x /usr/sbin/ndc -a -x /usr/sbin/named ]
|
||||||
|
then
|
||||||
|
/usr/sbin/ndc reload > /dev/null
|
||||||
|
fi
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
This should cause no harm in any case, and should be helpful in these
|
||||||
|
cases:
|
||||||
|
- you configure bind as a forwarder. When ppp is down, it cannot access
|
||||||
|
the network. As soon as ppp is up, it is forced by the script to try
|
||||||
|
again, and it succeeds.
|
||||||
|
- someone writes a clever script that, coupled with the `usepeerdns'
|
||||||
|
command of pppd, makes a forwarding-only bind use the right servers by
|
||||||
|
rewriting the configuration file after ppp goes up. Then the script
|
||||||
|
above makes bind reload the configuration.
|
||||||
|
|
||||||
|
Now, someone should write that clever script :-)
|
||||||
|
|
||||||
|
By the way, this is a badly wanted feature, that should help setting up
|
||||||
|
a ppp connection automatically. Currently, setting up a ppp connection
|
||||||
|
is much easier on a windows system than on linux, and there is really no
|
||||||
|
reason why it should be so, given that all the tools are there.
|
||||||
|
|
||||||
|
|
||||||
|
Apparmor Profile
|
||||||
|
----------------
|
||||||
|
If your system uses apparmor, please note that the shipped enforcing profile
|
||||||
|
works with the default installation, and changes in your configuration may
|
||||||
|
require changes to the installed apparmor profile. Please see
|
||||||
|
https://wiki.ubuntu.com/DebuggingApparmor before filing a bug against this
|
||||||
|
software.
|
19
SCR2.2/TP22/DOC/db.1.168.192.in-addr.arpa
Normal file
19
SCR2.2/TP22/DOC/db.1.168.192.in-addr.arpa
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
$TTL 7200
|
||||||
|
@ IN SOA osiris.tp.scr. root.tp.scr. (
|
||||||
|
202306061627 ;Serial
|
||||||
|
3600 ;Refresh
|
||||||
|
60 ;Retry
|
||||||
|
86400 ;Expire
|
||||||
|
600) ;Negative Catching TTL
|
||||||
|
;
|
||||||
|
@ IN NS eno.tp.scr.
|
||||||
|
@ IN NS owt.tp.scr.
|
||||||
|
@ IN NS eerht.tp.scr.
|
||||||
|
@ IN NS ruof.tp.scr.
|
||||||
|
@ IN NS osiris.tp.scr.
|
||||||
|
|
||||||
|
eno IN A 192.168.1.1
|
||||||
|
owt IN A 192.168.1.2
|
||||||
|
eerht IN A 192.168.1.3
|
||||||
|
ruof IN A 192.168.1.4
|
||||||
|
osiris IN A 192.168.1.158
|
15
SCR2.2/TP22/DOC/db.tp.scr
Normal file
15
SCR2.2/TP22/DOC/db.tp.scr
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
$TTL 7200
|
||||||
|
@ IN SOA osiris.tp.scr. root.tp.scr. (
|
||||||
|
202306061557 ;Serial
|
||||||
|
3600 ;Refresh
|
||||||
|
60 ;Retry
|
||||||
|
86400 ;Expire
|
||||||
|
600) ;Negative Catching TTL
|
||||||
|
;
|
||||||
|
@ IN NS osiris.tp.scr.
|
||||||
|
|
||||||
|
eno IN A 192.168.1.1
|
||||||
|
owt IN A 192.168.1.2
|
||||||
|
eerht IN A 192.168.1.3
|
||||||
|
ruof IN A 192.168.1.4
|
||||||
|
osiris IN A 192.168.1.158
|
15
SCR2.2/TP22/DOC/db.tp.scr.inv
Normal file
15
SCR2.2/TP22/DOC/db.tp.scr.inv
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
$TTL 7200
|
||||||
|
@ IN SOA osiris.tp.scr. root.tp.scr. (
|
||||||
|
202306061557 ;Serial
|
||||||
|
3600 ;Refresh
|
||||||
|
60 ;Retry
|
||||||
|
86400 ;Expire
|
||||||
|
600) ;Negative Catching TTL
|
||||||
|
;
|
||||||
|
@ IN NS osiris.tp.scr.
|
||||||
|
|
||||||
|
eno IN A 192.168.1.1
|
||||||
|
owt IN A 192.168.1.2
|
||||||
|
eerht IN A 192.168.1.3
|
||||||
|
ruof IN A 192.168.1.4
|
||||||
|
osiris IN A 192.168.1.158
|
17
SCR2.2/TP22/DOC/named.conf.local
Normal file
17
SCR2.2/TP22/DOC/named.conf.local
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// Do any local configuration here
|
||||||
|
//
|
||||||
|
|
||||||
|
// Consider adding the 1918 zones here, if they are not used in your
|
||||||
|
// organization
|
||||||
|
//include "/etc/bind/zones.rfc1918";
|
||||||
|
|
||||||
|
zone "tp.scr" {
|
||||||
|
type master ;
|
||||||
|
file "/etc/bind/db.tp.scr";
|
||||||
|
};
|
||||||
|
zone "1.168.192.in-addr.arpa" {
|
||||||
|
type master ;
|
||||||
|
file "/etc/bind/db.tp.scr.inv";
|
||||||
|
};
|
||||||
|
|
169
SCR2.2/TP22/dns1.imn
Normal file
169
SCR2.2/TP22/dns1.imn
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
node n0 {
|
||||||
|
type lanswitch
|
||||||
|
network-config {
|
||||||
|
hostname switch1
|
||||||
|
!
|
||||||
|
}
|
||||||
|
canvas c0
|
||||||
|
iconcoords {456 96}
|
||||||
|
labelcoords {456 119}
|
||||||
|
interface-peer {e0 n1}
|
||||||
|
interface-peer {e1 n2}
|
||||||
|
interface-peer {e2 n3}
|
||||||
|
interface-peer {e3 n4}
|
||||||
|
interface-peer {e4 n5}
|
||||||
|
}
|
||||||
|
|
||||||
|
node n1 {
|
||||||
|
type host
|
||||||
|
network-config {
|
||||||
|
hostname osiris
|
||||||
|
!
|
||||||
|
interface eth0
|
||||||
|
ipv6 address fc00::10/64
|
||||||
|
mac address 42:00:aa:00:00:00
|
||||||
|
ip address 192.168.1.158/24
|
||||||
|
!
|
||||||
|
interface lo0
|
||||||
|
type lo
|
||||||
|
ip address 127.0.0.1/8
|
||||||
|
ipv6 address ::1/128
|
||||||
|
!
|
||||||
|
}
|
||||||
|
canvas c0
|
||||||
|
iconcoords {120 144}
|
||||||
|
labelcoords {120 180}
|
||||||
|
interface-peer {eth0 n0}
|
||||||
|
}
|
||||||
|
|
||||||
|
node n2 {
|
||||||
|
type pc
|
||||||
|
network-config {
|
||||||
|
hostname eno
|
||||||
|
!
|
||||||
|
interface eth0
|
||||||
|
ipv6 address fc00::20/64
|
||||||
|
mac address 42:00:aa:00:00:01
|
||||||
|
ip address 192.168.1.1/24
|
||||||
|
!
|
||||||
|
interface lo0
|
||||||
|
type lo
|
||||||
|
ip address 127.0.0.1/8
|
||||||
|
ipv6 address ::1/128
|
||||||
|
!
|
||||||
|
}
|
||||||
|
canvas c0
|
||||||
|
iconcoords {216 288}
|
||||||
|
labelcoords {216 319}
|
||||||
|
interface-peer {eth0 n0}
|
||||||
|
}
|
||||||
|
|
||||||
|
node n3 {
|
||||||
|
type pc
|
||||||
|
network-config {
|
||||||
|
hostname owt
|
||||||
|
!
|
||||||
|
interface eth0
|
||||||
|
ipv6 address fc00::21/64
|
||||||
|
mac address 42:00:aa:00:00:02
|
||||||
|
ip address 192.168.1.2/24
|
||||||
|
!
|
||||||
|
interface lo0
|
||||||
|
type lo
|
||||||
|
ip address 127.0.0.1/8
|
||||||
|
ipv6 address ::1/128
|
||||||
|
!
|
||||||
|
}
|
||||||
|
canvas c0
|
||||||
|
iconcoords {384 360}
|
||||||
|
labelcoords {384 391}
|
||||||
|
interface-peer {eth0 n0}
|
||||||
|
}
|
||||||
|
|
||||||
|
node n4 {
|
||||||
|
type pc
|
||||||
|
network-config {
|
||||||
|
hostname eerht
|
||||||
|
!
|
||||||
|
interface eth0
|
||||||
|
ipv6 address fc00::22/64
|
||||||
|
mac address 42:00:aa:00:00:03
|
||||||
|
ip address 192.168.1.3/24
|
||||||
|
!
|
||||||
|
interface lo0
|
||||||
|
type lo
|
||||||
|
ip address 127.0.0.1/8
|
||||||
|
ipv6 address ::1/128
|
||||||
|
!
|
||||||
|
}
|
||||||
|
canvas c0
|
||||||
|
iconcoords {624 360}
|
||||||
|
labelcoords {624 391}
|
||||||
|
interface-peer {eth0 n0}
|
||||||
|
}
|
||||||
|
|
||||||
|
node n5 {
|
||||||
|
type pc
|
||||||
|
network-config {
|
||||||
|
hostname ruof
|
||||||
|
!
|
||||||
|
interface eth0
|
||||||
|
ipv6 address fc00::23/64
|
||||||
|
mac address 42:00:aa:00:00:04
|
||||||
|
ip address 192.168.1.4/24
|
||||||
|
!
|
||||||
|
interface lo0
|
||||||
|
type lo
|
||||||
|
ip address 127.0.0.1/8
|
||||||
|
ipv6 address ::1/128
|
||||||
|
!
|
||||||
|
}
|
||||||
|
canvas c0
|
||||||
|
iconcoords {792 264}
|
||||||
|
labelcoords {792 295}
|
||||||
|
interface-peer {eth0 n0}
|
||||||
|
}
|
||||||
|
|
||||||
|
link l0 {
|
||||||
|
nodes {n0 n1}
|
||||||
|
bandwidth 0
|
||||||
|
}
|
||||||
|
|
||||||
|
link l1 {
|
||||||
|
nodes {n2 n0}
|
||||||
|
bandwidth 0
|
||||||
|
}
|
||||||
|
|
||||||
|
link l2 {
|
||||||
|
nodes {n3 n0}
|
||||||
|
bandwidth 0
|
||||||
|
}
|
||||||
|
|
||||||
|
link l3 {
|
||||||
|
nodes {n4 n0}
|
||||||
|
bandwidth 0
|
||||||
|
}
|
||||||
|
|
||||||
|
link l4 {
|
||||||
|
nodes {n5 n0}
|
||||||
|
bandwidth 0
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas c0 {
|
||||||
|
name {Canvas0}
|
||||||
|
}
|
||||||
|
|
||||||
|
option show {
|
||||||
|
interface_names yes
|
||||||
|
ip_addresses yes
|
||||||
|
ipv6_addresses no
|
||||||
|
node_labels yes
|
||||||
|
link_labels yes
|
||||||
|
background_images no
|
||||||
|
annotations yes
|
||||||
|
hostsAutoAssign no
|
||||||
|
grid yes
|
||||||
|
iconSize normal
|
||||||
|
zoom 1.0
|
||||||
|
}
|
||||||
|
|
518
SCR2.2/TP23/dns2.imn
Normal file
518
SCR2.2/TP23/dns2.imn
Normal file
File diff suppressed because it is too large
Load Diff
20
SCR2.2/TP23/host10.db.root
Normal file
20
SCR2.2/TP23/host10.db.root
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
; This file holds the information on root name servers needed to
|
||||||
|
; initialize cache of Internet domain name servers
|
||||||
|
; (e.g. reference this file in the "cache . <file>"
|
||||||
|
; configuration file of BIND domain name servers).
|
||||||
|
;
|
||||||
|
; This file is made available by InterNIC
|
||||||
|
; under anonymous FTP as
|
||||||
|
; file /domain/named.cache
|
||||||
|
; on server FTP.INTERNIC.NET
|
||||||
|
; -OR- RS.INTERNIC.NET
|
||||||
|
;
|
||||||
|
; last update: June 08, 2023
|
||||||
|
; related version of root zone: 2023060802
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; OPERATED BY WIDE
|
||||||
|
;
|
||||||
|
. 3600000 NS ROOT-SERV.
|
||||||
|
ROOT-SERV. 3600000 A 90.90.0.10
|
||||||
|
; End of file
|
92
SCR2.2/TP23/named.root
Normal file
92
SCR2.2/TP23/named.root
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
; This file holds the information on root name servers needed to
|
||||||
|
; initialize cache of Internet domain name servers
|
||||||
|
; (e.g. reference this file in the "cache . <file>"
|
||||||
|
; configuration file of BIND domain name servers).
|
||||||
|
;
|
||||||
|
; This file is made available by InterNIC
|
||||||
|
; under anonymous FTP as
|
||||||
|
; file /domain/named.cache
|
||||||
|
; on server FTP.INTERNIC.NET
|
||||||
|
; -OR- RS.INTERNIC.NET
|
||||||
|
;
|
||||||
|
; last update: June 08, 2023
|
||||||
|
; related version of root zone: 2023060802
|
||||||
|
;
|
||||||
|
; FORMERLY NS.INTERNIC.NET
|
||||||
|
;
|
||||||
|
. 3600000 NS A.ROOT-SERVERS.NET.
|
||||||
|
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
|
||||||
|
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30
|
||||||
|
;
|
||||||
|
; FORMERLY NS1.ISI.EDU
|
||||||
|
;
|
||||||
|
. 3600000 NS B.ROOT-SERVERS.NET.
|
||||||
|
B.ROOT-SERVERS.NET. 3600000 A 199.9.14.201
|
||||||
|
B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:200::b
|
||||||
|
;
|
||||||
|
; FORMERLY C.PSI.NET
|
||||||
|
;
|
||||||
|
. 3600000 NS C.ROOT-SERVERS.NET.
|
||||||
|
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
|
||||||
|
C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c
|
||||||
|
;
|
||||||
|
; FORMERLY TERP.UMD.EDU
|
||||||
|
;
|
||||||
|
. 3600000 NS D.ROOT-SERVERS.NET.
|
||||||
|
D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13
|
||||||
|
D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d
|
||||||
|
;
|
||||||
|
; FORMERLY NS.NASA.GOV
|
||||||
|
;
|
||||||
|
. 3600000 NS E.ROOT-SERVERS.NET.
|
||||||
|
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
|
||||||
|
E.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:a8::e
|
||||||
|
;
|
||||||
|
; FORMERLY NS.ISC.ORG
|
||||||
|
;
|
||||||
|
. 3600000 NS F.ROOT-SERVERS.NET.
|
||||||
|
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
|
||||||
|
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f
|
||||||
|
;
|
||||||
|
; FORMERLY NS.NIC.DDN.MIL
|
||||||
|
;
|
||||||
|
. 3600000 NS G.ROOT-SERVERS.NET.
|
||||||
|
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
|
||||||
|
G.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:12::d0d
|
||||||
|
;
|
||||||
|
; FORMERLY AOS.ARL.ARMY.MIL
|
||||||
|
;
|
||||||
|
. 3600000 NS H.ROOT-SERVERS.NET.
|
||||||
|
H.ROOT-SERVERS.NET. 3600000 A 198.97.190.53
|
||||||
|
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::53
|
||||||
|
;
|
||||||
|
; FORMERLY NIC.NORDU.NET
|
||||||
|
;
|
||||||
|
. 3600000 NS I.ROOT-SERVERS.NET.
|
||||||
|
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
|
||||||
|
I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53
|
||||||
|
;
|
||||||
|
; OPERATED BY VERISIGN, INC.
|
||||||
|
;
|
||||||
|
. 3600000 NS J.ROOT-SERVERS.NET.
|
||||||
|
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
|
||||||
|
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30
|
||||||
|
;
|
||||||
|
; OPERATED BY RIPE NCC
|
||||||
|
;
|
||||||
|
. 3600000 NS K.ROOT-SERVERS.NET.
|
||||||
|
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
|
||||||
|
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1
|
||||||
|
;
|
||||||
|
; OPERATED BY ICANN
|
||||||
|
;
|
||||||
|
. 3600000 NS L.ROOT-SERVERS.NET.
|
||||||
|
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
|
||||||
|
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:9f::42
|
||||||
|
;
|
||||||
|
; OPERATED BY WIDE
|
||||||
|
;
|
||||||
|
. 3600000 NS M.ROOT-SERVERS.NET.
|
||||||
|
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
|
||||||
|
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35
|
||||||
|
; End of file
|
13
SCR2.2/TP23/root-serv.db.root
Normal file
13
SCR2.2/TP23/root-serv.db.root
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
@ IN SOA ROOT-SERV. root. (
|
||||||
|
2007010401 ; Serial
|
||||||
|
3600 ; Refresh [1h]
|
||||||
|
600 ; Retry [10m]
|
||||||
|
86400 ; Expire [1d]
|
||||||
|
600 ) ; Negative Cache TTL [1h]
|
||||||
|
;
|
||||||
|
mos IN NS sethi.
|
||||||
|
mos IN NS kheops.
|
||||||
|
|
||||||
|
sethi.mos. IN A 80.80.0.20
|
||||||
|
kheops.mos. IN A 80.80.0.10
|
||||||
|
|
BIN
SCR2.2/TP23/tp23.SCR.2.2.pdf
Normal file
BIN
SCR2.2/TP23/tp23.SCR.2.2.pdf
Normal file
Binary file not shown.
@ -5,7 +5,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <wait.h>
|
#include <wait.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
de
|
|
||||||
|
|
||||||
int main(int argc, char **argv){
|
int main(int argc, char **argv){
|
||||||
if (argc != 3){
|
if (argc != 3){
|
||||||
@ -14,7 +13,7 @@ int main(int argc, char **argv){
|
|||||||
}
|
}
|
||||||
pid_t p;
|
pid_t p;
|
||||||
int fd1, fd2;
|
int fd1, fd2;
|
||||||
char buf[BUF_SIZE];
|
char buf1, buf2;
|
||||||
fd1 = open(argv[1], O_RDONLY);
|
fd1 = open(argv[1], O_RDONLY);
|
||||||
fd2 = open(argv[2], O_RDONLY);
|
fd2 = open(argv[2], O_RDONLY);
|
||||||
if (fd1 == -1 || fd2 == -1){
|
if (fd1 == -1 || fd2 == -1){
|
||||||
@ -27,5 +26,10 @@ int main(int argc, char **argv){
|
|||||||
perror("Error while creating a new process");
|
perror("Error while creating a new process");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
case 0:
|
case 0:
|
||||||
while(read
|
// Read file a
|
||||||
|
read(fd1, &buf1, sizeof(char));
|
||||||
|
default:
|
||||||
|
//Read file b & compare both files
|
||||||
|
read(fd2, &buf2, sizeof(char));
|
||||||
|
|
||||||
|
|
||||||
|
36
SCR3.1/TP5/ex3.c
Normal file
36
SCR3.1/TP5/ex3.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
long int fibo (long int n)
|
||||||
|
{
|
||||||
|
if (n <= 1)
|
||||||
|
return n;
|
||||||
|
long int pipe[2];
|
||||||
|
pid_t proc;
|
||||||
|
assert (pipe(pipe) >= 0);
|
||||||
|
proc = fork();
|
||||||
|
assert(proc != -1);
|
||||||
|
switch(p){
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/*code*/
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
long int n;
|
||||||
|
assert(argc > 1);
|
||||||
|
n=strtol(argv[1],NULL,0);
|
||||||
|
printf("fibo(%ld) = %ld\n",n,fibo(n));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
74
SCR3.1/TP6/ex3.c
Normal file
74
SCR3.1/TP6/ex3.c
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#include <assert.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
static inline double tstamp(void)
|
||||||
|
{
|
||||||
|
struct timespec tv;
|
||||||
|
clock_gettime(CLOCK_REALTIME, &tv);
|
||||||
|
return tv.tv_sec + tv.tv_nsec * 1.0e-9;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct thread_arg
|
||||||
|
{
|
||||||
|
long int start;
|
||||||
|
long int limit;
|
||||||
|
long int inc;
|
||||||
|
long int S;
|
||||||
|
} thread_arg;
|
||||||
|
|
||||||
|
void *slice(void *arg)
|
||||||
|
{
|
||||||
|
thread_arg *a = (thread_arg *)arg;
|
||||||
|
long int S = 0;
|
||||||
|
|
||||||
|
for (long int i = a->start; i <= a->limit; i = i + a->inc)
|
||||||
|
{
|
||||||
|
S += i;
|
||||||
|
}
|
||||||
|
a->S = S;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
long int N, M, S = 0;
|
||||||
|
thread_arg *args;
|
||||||
|
pthread_t *ths;
|
||||||
|
double t1, t2;
|
||||||
|
|
||||||
|
assert(argc >= 3);
|
||||||
|
N = strtol(argv[1], NULL, 0);
|
||||||
|
M = strtol(argv[2], NULL, 0);
|
||||||
|
t1 = tstamp();
|
||||||
|
|
||||||
|
args = (thread_arg *)calloc(M, sizeof(thread_arg));
|
||||||
|
assert(args != NULL);
|
||||||
|
|
||||||
|
ths = (pthread_t *)calloc(M, sizeof(pthread_t));
|
||||||
|
assert(ths != NULL);
|
||||||
|
|
||||||
|
for (int i = 0; i < M; i++)
|
||||||
|
{
|
||||||
|
args[i].inc = M;
|
||||||
|
args[i].limit = N;
|
||||||
|
args[i].start = i + 1;
|
||||||
|
pthread_create(ths + i, NULL, slice, (void *)(args + i));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < M; i++)
|
||||||
|
{
|
||||||
|
pthread_join(ths[i], NULL);
|
||||||
|
S += args[i].S;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(S == N * (N + 1) / 2);
|
||||||
|
|
||||||
|
t2 = tstamp();
|
||||||
|
printf("S = %ld\n", S);
|
||||||
|
printf("t = %lf\n", t2 - t1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
BIN
SCR3.1/TP6/max
Executable file
BIN
SCR3.1/TP6/max
Executable file
Binary file not shown.
@ -3,15 +3,18 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
struct stack_t {
|
struct stack_t {
|
||||||
/*
|
int size;
|
||||||
votre implantation
|
int * tableau;
|
||||||
|
int index;
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
stack_t * stack_create( int max_size)
|
stack_t * stack_create( int max_size)
|
||||||
{
|
{
|
||||||
|
stack_t new;
|
||||||
|
new.size = max_size;
|
||||||
|
new.index = index;
|
||||||
|
return *new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -22,11 +25,22 @@ int stack_destroy(stack_t * s)
|
|||||||
|
|
||||||
int stack_push(stack_t *s,int val)
|
int stack_push(stack_t *s,int val)
|
||||||
{
|
{
|
||||||
|
if (s->index == 0){
|
||||||
|
s->tableau = malloc(s->size * sizeof(int);
|
||||||
|
}
|
||||||
|
if (s->index == s->size - 1){
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
s->tableau[value]=val;
|
||||||
|
s->value = s->value + 1;
|
||||||
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int stack_pop(stack_t *s,int * val)
|
int stack_pop(stack_t *s,int * val)
|
||||||
{
|
{
|
||||||
|
if (s->index == 0){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
s->
|
||||||
}
|
}
|
||||||
|
|
||||||
|
62
SCR3.1/devoir27/TaF27
Normal file
62
SCR3.1/devoir27/TaF27
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
Créez un répertoire cntr_r3.05, et pour chaque exercice un sous-répertoire (Ex1,
|
||||||
|
Ex2, etc.) pour y placer vos réponses.
|
||||||
|
|
||||||
|
Les exercices sont indépendants. Vous rendrez une archive compressée à la fin de
|
||||||
|
l'épreuve sur le site :
|
||||||
|
|
||||||
|
http://www.iut-fbleau.fr/site/site/DEVOIR
|
||||||
|
|
||||||
|
# EX1
|
||||||
|
1) Ecrivez un programme gdf1.c qui implante le diagramme de processus
|
||||||
|
conforme à la sortie suivante de la commande ps :
|
||||||
|
|
||||||
|
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
|
||||||
|
0 S 1000 30539 28785 0 80 0 - 1039 hrtime pts/0 00:00:00 a.out
|
||||||
|
1 S 1000 30542 30539 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||||||
|
1 S 1000 30544 30542 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||||||
|
1 S 1000 30546 30544 0 80 0 - 1039 hrtime pts/0 00:00:00 | \_ a.out
|
||||||
|
1 S 1000 30545 30542 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||||||
|
|
||||||
|
2) Expliquez (dans gdf2.txt) ce que provoque kill -TERM 30544.
|
||||||
|
|
||||||
|
3) Modifiez votre programme (gdf3.c) pour que le processus correspondant à 30546 utilise un
|
||||||
|
tube pour communiquer son PID au le processus correspondant à 30539.
|
||||||
|
|
||||||
|
# EX2
|
||||||
|
Le sous-repertoire 'src/' de votre répértoire de travail contient le source du
|
||||||
|
programme 'cachetst.c'. Ce programme peut être utilisé pour tester certaines
|
||||||
|
propriétés de la mémoire cache. Il crée une liste de structures et effectue
|
||||||
|
plusieurs passages par cette liste en faisant un test sur chaque élément.
|
||||||
|
|
||||||
|
La longueur de la liste et le nombre de passages (itérations) doivent être
|
||||||
|
donnsés sur la ligne de commande. Compilez et lancez ce programme avec par
|
||||||
|
exemple les valeurs '1000' '1000' sur la ligne de commande pour voir ce qu'il
|
||||||
|
calcule. Augmentez ces valeurs en prenant '10000' '100000' pour voir que le
|
||||||
|
temps de calcul est assez long.
|
||||||
|
|
||||||
|
Votre travail consiste à rajouter une partie de code à ce programme (appelez le
|
||||||
|
'vcachetst.c') pour qu'il affiche le nombre de tests actuellement
|
||||||
|
passés (la valeur de la variable 'z') après un ctrl + z depuis le terminal.
|
||||||
|
|
||||||
|
Mettez le source du programme 'vcachetst.c' dans le sous-repertoire 'src/'
|
||||||
|
|
||||||
|
# EX3
|
||||||
|
Écrire un programme où un processus père crée deux fils ; chaque fils attend un
|
||||||
|
couple d'entiers (x, y) du père et le renvoie dans l'ordre croissant. (combien
|
||||||
|
faut-il de tubes ?)
|
||||||
|
|
||||||
|
1. Le père prend quatre entiers a, b, c, d sur la ligne de commande,
|
||||||
|
|
||||||
|
2. il ordonne les couples (a1 , b1) et (c1, d1) grâce à ses deux fils (le père
|
||||||
|
donne le travail à **ses deux fils** avant de récupèrer le résultat)
|
||||||
|
|
||||||
|
3. Puis il ordonne les couples (a1, c1) et (b1, d1) grâce à ses deux fils, et
|
||||||
|
il obtient les couples (a2, c2) et (b2, d2).
|
||||||
|
|
||||||
|
4. Finalement, il ordonne le couple (c2 , b2) à l'aide d'un fils Il obtient le.
|
||||||
|
couple (c3, b3) .
|
||||||
|
|
||||||
|
5. Il affiche (a2 , c3 , b3 , d2).
|
||||||
|
|
||||||
|
On vieillera à fermer les descripteurs de fichiers inutilisés, à ne pas
|
||||||
|
dupliquer du code inutiliement.
|
17
SCR3.1/devoir27/ex1/gdf1.c
Normal file
17
SCR3.1/devoir27/ex1/gdf1.c
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
int main(void){
|
||||||
|
pid_t x, x1, x2, x3;
|
||||||
|
x1 = fork();
|
||||||
|
if (x1 == 0){
|
||||||
|
x2=fork();
|
||||||
|
if (x2 == 0)
|
||||||
|
x = fork();
|
||||||
|
x3=fork();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
1
SCR3.1/devoir27/ex1/gdf2.txt
Normal file
1
SCR3.1/devoir27/ex1/gdf2.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
La commande "kill -TERM 30544" provoque l'arrêt forcé du processus 30544, à cause du signal de terminaison envoyé
|
38
SCR3.1/devoir27/ex1/gdf3.c
Normal file
38
SCR3.1/devoir27/ex1/gdf3.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#define BUF_SIZE 128
|
||||||
|
|
||||||
|
int main(void){
|
||||||
|
pid_t x, x1, x2, x3;
|
||||||
|
int p[2];
|
||||||
|
char buf;
|
||||||
|
assert(pipe(p) != -1);
|
||||||
|
x1 = fork();
|
||||||
|
if (x1 == 0){
|
||||||
|
x2=fork();
|
||||||
|
if (x2 == 0){
|
||||||
|
x = fork();
|
||||||
|
if (x == 0){
|
||||||
|
close(p[0]);
|
||||||
|
dup2(p[1], 1);
|
||||||
|
close(p[1]);
|
||||||
|
printf("%d", getpid());
|
||||||
|
}
|
||||||
|
x3=fork();
|
||||||
|
}
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
if (x1 > 0){
|
||||||
|
close(p[1]);
|
||||||
|
while(read(p[0], &buf, sizeof(char)) > 0)
|
||||||
|
write(1, &buf, sizeof(char));
|
||||||
|
}
|
||||||
|
close(p[0]);
|
||||||
|
printf("\n");
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
19
SCR3.1/devoir27/ex2/helpers.c
Normal file
19
SCR3.1/devoir27/ex2/helpers.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "helpers.h"
|
||||||
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
int set_signal_handler(int signo, void (*handler)(int)) {
|
||||||
|
struct sigaction sa;
|
||||||
|
sa.sa_handler = handler; // call `handler` on signal
|
||||||
|
sigemptyset(&sa.sa_mask); // don't block other signals in handler
|
||||||
|
sa.sa_flags = SA_RESTART; // restart system calls
|
||||||
|
return sigaction(signo, &sa, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
double tstamp(void) {
|
||||||
|
struct timespec tv;
|
||||||
|
clock_gettime(CLOCK_REALTIME, &tv);
|
||||||
|
return tv.tv_sec + tv.tv_nsec * 1.0e-9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
7
SCR3.1/devoir27/ex2/helpers.h
Normal file
7
SCR3.1/devoir27/ex2/helpers.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef _HELPERS_H
|
||||||
|
#define _HELPERS_H
|
||||||
|
|
||||||
|
int set_signal_handler(int signo, void (*handler)(int));
|
||||||
|
double tstamp(void);
|
||||||
|
|
||||||
|
#endif
|
95
SCR3.1/devoir27/ex2/vcachetest.c
Normal file
95
SCR3.1/devoir27/ex2/vcachetest.c
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <x86intrin.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "helpers.c"
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define PLSIZE 63
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct lst {
|
||||||
|
struct lst * next;
|
||||||
|
long int payload[PLSIZE];
|
||||||
|
} l;
|
||||||
|
|
||||||
|
|
||||||
|
struct lst * mkws(int size)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
struct lst * ws0,*ws;
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
srand(time(0));
|
||||||
|
ws = calloc(1,sizeof(struct lst));
|
||||||
|
ws->next = NULL;
|
||||||
|
|
||||||
|
for (i=0;i<PLSIZE;i++)
|
||||||
|
ws->payload[i]=(rand())%2;
|
||||||
|
|
||||||
|
for (j=1;j<size;j++) {
|
||||||
|
ws0=ws;
|
||||||
|
ws = calloc(1,sizeof(struct lst));
|
||||||
|
if (ws==NULL) {
|
||||||
|
fprintf(stderr,"Can't add element...\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
for (i=0;i<PLSIZE;i++)
|
||||||
|
ws->payload[i]=(rand())%2;
|
||||||
|
ws->next = ws0;
|
||||||
|
}
|
||||||
|
return ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
long int z = 0;
|
||||||
|
|
||||||
|
void kill_prg(int){
|
||||||
|
printf("Nombre de tests effectués: %ld\n", z);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char ** argv)
|
||||||
|
{
|
||||||
|
struct lst * ws, * ws0;
|
||||||
|
|
||||||
|
long long int start, end, dif;
|
||||||
|
|
||||||
|
long int i, x, size, it;
|
||||||
|
|
||||||
|
if (argc != 3) {
|
||||||
|
printf("Usage: %s <list size> <iterations>\n",argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
set_signal_handler(SIGTSTP, &kill_prg);
|
||||||
|
size=strtol(argv[1],NULL,0);
|
||||||
|
|
||||||
|
ws = mkws(size);
|
||||||
|
if (ws == NULL) {
|
||||||
|
printf("NIL list created...\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
it = strtol(argv[2],NULL,0);
|
||||||
|
|
||||||
|
start = __rdtsc();
|
||||||
|
for (i = 0; i < it; i++) {
|
||||||
|
ws0 = ws;
|
||||||
|
while (ws0 != NULL) {
|
||||||
|
x = ws0->payload[3];
|
||||||
|
x++;
|
||||||
|
z++;
|
||||||
|
ws0 = ws0->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end = __rdtsc();
|
||||||
|
|
||||||
|
dif = end - start;
|
||||||
|
printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it));
|
||||||
|
exit(0);
|
||||||
|
}
|
86
SCR3.1/devoir27/ex3/ex3.c
Normal file
86
SCR3.1/devoir27/ex3/ex3.c
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
int ordre(int a, int b){
|
||||||
|
if (a < b)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv){
|
||||||
|
if (argc != 5){
|
||||||
|
printf("Usage : %s <entier1> <entier2> <entier3> <entier4>\n", argv[0]);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
pid_t x1, x2;
|
||||||
|
int p1[2], p2[2],tmp, a, b, c, d;
|
||||||
|
int x3 = strtod(argv[1], NULL), x4 = strtod(argv[2], NULL);
|
||||||
|
pipe(p1);
|
||||||
|
pipe(p2);
|
||||||
|
x1=fork();
|
||||||
|
x2=fork();
|
||||||
|
if (x1 > 0){
|
||||||
|
close(p1[0]);
|
||||||
|
write(p1[1],&x3, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
write(p1[1],(int*) &x4, sizeof(int));
|
||||||
|
x3 = strtod(argv[3], NULL);
|
||||||
|
x4 = strtod(argv[4], NULL);
|
||||||
|
write(p2[1], &x3, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
write(p2[1], &x3, sizeof(int));
|
||||||
|
close(p1[1]);
|
||||||
|
close(p2[1]);
|
||||||
|
dup(p1[0]);
|
||||||
|
read(p1[0], &a, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
read(p1[0], &b, sizeof(int));
|
||||||
|
close(p1[0]);
|
||||||
|
dup(p2[0]);
|
||||||
|
read(p2[0], &c, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
read(p2[0], &d, sizeof(int));
|
||||||
|
close(p2[0]);
|
||||||
|
printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
|
||||||
|
}
|
||||||
|
if (x1 == 0){
|
||||||
|
close(p1[1]);
|
||||||
|
read(p1[0], &x3, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
read(p1[0], &x4, sizeof(int));
|
||||||
|
if (!ordre(x3, x4)){
|
||||||
|
tmp = x4;
|
||||||
|
x4 = x3;
|
||||||
|
x3 = tmp;
|
||||||
|
}
|
||||||
|
printf("x3 = %d, x4 = %d", x3, x4);
|
||||||
|
close(p1[0]);
|
||||||
|
write(p1[1], &x3, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
write(p1[1], &x4, sizeof(int));
|
||||||
|
}
|
||||||
|
if (x2 == 0){
|
||||||
|
close(p2[1]);
|
||||||
|
read(p2[0], &x3, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
read(p2[0], &x4, sizeof(int));
|
||||||
|
ordre(x3, x4);
|
||||||
|
if (!ordre(x3, x4)){
|
||||||
|
tmp = x3;
|
||||||
|
x3 = x4;
|
||||||
|
x4 = x3;
|
||||||
|
}
|
||||||
|
dup(p2[1]);
|
||||||
|
close(p2[0]);
|
||||||
|
write(p2[1], &x3, sizeof(int));
|
||||||
|
sleep(2);
|
||||||
|
write(p2[1], &x4, sizeof(int));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
87
SCR3.1/devoir27/src/cachetst.c
Normal file
87
SCR3.1/devoir27/src/cachetst.c
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <x86intrin.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#define PLSIZE 63
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct lst {
|
||||||
|
struct lst * next;
|
||||||
|
long int payload[PLSIZE];
|
||||||
|
} l;
|
||||||
|
|
||||||
|
|
||||||
|
struct lst * mkws(int size)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
struct lst * ws0,*ws;
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
srand(time(0));
|
||||||
|
ws = calloc(1,sizeof(struct lst));
|
||||||
|
ws->next = NULL;
|
||||||
|
|
||||||
|
for (i=0;i<PLSIZE;i++)
|
||||||
|
ws->payload[i]=(rand())%2;
|
||||||
|
|
||||||
|
for (j=1;j<size;j++) {
|
||||||
|
ws0=ws;
|
||||||
|
ws = calloc(1,sizeof(struct lst));
|
||||||
|
if (ws==NULL) {
|
||||||
|
fprintf(stderr,"Can't add element...\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
for (i=0;i<PLSIZE;i++)
|
||||||
|
ws->payload[i]=(rand())%2;
|
||||||
|
ws->next = ws0;
|
||||||
|
}
|
||||||
|
return ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char ** argv)
|
||||||
|
{
|
||||||
|
struct lst * ws, * ws0;
|
||||||
|
|
||||||
|
long long int start, end, dif;
|
||||||
|
|
||||||
|
long int i, x, z = 0, size, it;
|
||||||
|
|
||||||
|
if (argc != 3) {
|
||||||
|
printf("Usage: %s <list size> <iterations>\n",argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
size=strtol(argv[1],NULL,0);
|
||||||
|
|
||||||
|
ws = mkws(size);
|
||||||
|
if (ws == NULL) {
|
||||||
|
printf("NIL list created...\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
it = strtol(argv[2],NULL,0);
|
||||||
|
|
||||||
|
start = __rdtsc();
|
||||||
|
for (i = 0; i < it; i++) {
|
||||||
|
ws0 = ws;
|
||||||
|
while (ws0 != NULL) {
|
||||||
|
x = ws0->payload[3];
|
||||||
|
x++;
|
||||||
|
z++;
|
||||||
|
ws0 = ws0->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end = __rdtsc();
|
||||||
|
|
||||||
|
dif = end - start;
|
||||||
|
printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it));
|
||||||
|
exit(0);
|
||||||
|
}
|
19
SCR3.1/devoir27/src/helpers.c
Normal file
19
SCR3.1/devoir27/src/helpers.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "helpers.h"
|
||||||
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
int set_signal_handler(int signo, void (*handler)(int)) {
|
||||||
|
struct sigaction sa;
|
||||||
|
sa.sa_handler = handler; // call `handler` on signal
|
||||||
|
sigemptyset(&sa.sa_mask); // don't block other signals in handler
|
||||||
|
sa.sa_flags = SA_RESTART; // restart system calls
|
||||||
|
return sigaction(signo, &sa, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
double tstamp(void) {
|
||||||
|
struct timespec tv;
|
||||||
|
clock_gettime(CLOCK_REALTIME, &tv);
|
||||||
|
return tv.tv_sec + tv.tv_nsec * 1.0e-9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
7
SCR3.1/devoir27/src/helpers.h
Normal file
7
SCR3.1/devoir27/src/helpers.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef _HELPERS_H
|
||||||
|
#define _HELPERS_H
|
||||||
|
|
||||||
|
int set_signal_handler(int signo, void (*handler)(int));
|
||||||
|
double tstamp(void);
|
||||||
|
|
||||||
|
#endif
|
95
SCR3.1/devoir27/src/vcachetest.c
Normal file
95
SCR3.1/devoir27/src/vcachetest.c
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <x86intrin.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "helpers.c"
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define PLSIZE 63
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct lst {
|
||||||
|
struct lst * next;
|
||||||
|
long int payload[PLSIZE];
|
||||||
|
} l;
|
||||||
|
|
||||||
|
|
||||||
|
struct lst * mkws(int size)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
struct lst * ws0,*ws;
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
srand(time(0));
|
||||||
|
ws = calloc(1,sizeof(struct lst));
|
||||||
|
ws->next = NULL;
|
||||||
|
|
||||||
|
for (i=0;i<PLSIZE;i++)
|
||||||
|
ws->payload[i]=(rand())%2;
|
||||||
|
|
||||||
|
for (j=1;j<size;j++) {
|
||||||
|
ws0=ws;
|
||||||
|
ws = calloc(1,sizeof(struct lst));
|
||||||
|
if (ws==NULL) {
|
||||||
|
fprintf(stderr,"Can't add element...\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
for (i=0;i<PLSIZE;i++)
|
||||||
|
ws->payload[i]=(rand())%2;
|
||||||
|
ws->next = ws0;
|
||||||
|
}
|
||||||
|
return ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
long int z = 0;
|
||||||
|
|
||||||
|
void kill_prg(int){
|
||||||
|
printf("Nombre de tests effectués: %ld\n", z);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char ** argv)
|
||||||
|
{
|
||||||
|
struct lst * ws, * ws0;
|
||||||
|
|
||||||
|
long long int start, end, dif;
|
||||||
|
|
||||||
|
long int i, x, size, it;
|
||||||
|
|
||||||
|
if (argc != 3) {
|
||||||
|
printf("Usage: %s <list size> <iterations>\n",argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
set_signal_handler(SIGTSTP, &kill_prg);
|
||||||
|
size=strtol(argv[1],NULL,0);
|
||||||
|
|
||||||
|
ws = mkws(size);
|
||||||
|
if (ws == NULL) {
|
||||||
|
printf("NIL list created...\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
it = strtol(argv[2],NULL,0);
|
||||||
|
|
||||||
|
start = __rdtsc();
|
||||||
|
for (i = 0; i < it; i++) {
|
||||||
|
ws0 = ws;
|
||||||
|
while (ws0 != NULL) {
|
||||||
|
x = ws0->payload[3];
|
||||||
|
x++;
|
||||||
|
z++;
|
||||||
|
ws0 = ws0->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end = __rdtsc();
|
||||||
|
|
||||||
|
dif = end - start;
|
||||||
|
printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it));
|
||||||
|
exit(0);
|
||||||
|
}
|
BIN
SCR3.1/gdf
Executable file
BIN
SCR3.1/gdf
Executable file
Binary file not shown.
34
SCR3.1/gdf.c
Normal file
34
SCR3.1/gdf.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
|
||||||
|
int main(void){
|
||||||
|
pid_t x1,x2,x3,x4;
|
||||||
|
x1=fork();
|
||||||
|
if (x1 == 0){
|
||||||
|
x2=fork();
|
||||||
|
if (x2>0) {
|
||||||
|
sleep(10);
|
||||||
|
kill(x2,SIGINT);
|
||||||
|
}
|
||||||
|
if (x2 == 0) {
|
||||||
|
x3=fork();
|
||||||
|
if (x3 == 0)
|
||||||
|
x4=fork();
|
||||||
|
if (x3 > 0){
|
||||||
|
sleep(5);
|
||||||
|
kill(x3,SIGINT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (x1 > 0)
|
||||||
|
x4=fork();
|
||||||
|
while(1) {
|
||||||
|
printf(" %d\n", getpid());
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
arm/.small-loop.s.swp
Normal file
BIN
arm/.small-loop.s.swp
Normal file
Binary file not shown.
15
arm/add-int.s
Normal file
15
arm/add-int.s
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.equ SYS_EXIT, 93
|
||||||
|
.data
|
||||||
|
int1 : .quad 0x15
|
||||||
|
int2 : .quad 0x2
|
||||||
|
.text
|
||||||
|
.global _start
|
||||||
|
|
||||||
|
_start: adr x3, int1
|
||||||
|
ldr x0, [x3]
|
||||||
|
adr x3, int2
|
||||||
|
ldr x1, [x3]
|
||||||
|
add x2,x0,x1
|
||||||
|
mov x0, #0
|
||||||
|
mov w8, #SYS_EXIT
|
||||||
|
svc #0
|
16
arm/adds-int32.s
Normal file
16
arm/adds-int32.s
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
.equ SYS_EXIT, 93
|
||||||
|
.data
|
||||||
|
int1 : .word 0x7fffffff
|
||||||
|
int2 : .word 0x1
|
||||||
|
.text
|
||||||
|
.global _start
|
||||||
|
|
||||||
|
_start: adr x3, int1
|
||||||
|
ldr w0, [x3]
|
||||||
|
adr x3, int2
|
||||||
|
ldr w1, [x3]
|
||||||
|
adds w2,w0,w1
|
||||||
|
mrs x4, nzcv
|
||||||
|
mov w0, #0
|
||||||
|
mov w8, #SYS_EXIT
|
||||||
|
svc #0
|
14
arm/barrel-experiment.s
Normal file
14
arm/barrel-experiment.s
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.equ SYS_EXIT, 93
|
||||||
|
|
||||||
|
.data
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
|
||||||
|
_start :
|
||||||
|
mov x0, #15
|
||||||
|
add x1,x0,x0,lsl #4 //x0 * 16 + x0
|
||||||
|
mov x2, #1
|
||||||
|
sub x1,xzr,x2, lsl #3 // 0 - 8
|
||||||
|
mov w8, #SYS_EXIT
|
||||||
|
svc #0
|
||||||
|
|
16
arm/mult-bin-loop.c
Normal file
16
arm/mult-bin-loop.c
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
unsigned int a = 0xa2;
|
||||||
|
unsigned int b = 0xb;
|
||||||
|
unsigned long long int res = 0;
|
||||||
|
unsigned long long int extra = (unsigned long long int) a;
|
||||||
|
while (b) {
|
||||||
|
if (b & 0x1) res += extra;
|
||||||
|
extra = extra << 1;
|
||||||
|
b = b >> 1;
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
28
arm/mult-bin-loop.s
Normal file
28
arm/mult-bin-loop.s
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
.equ SYS_EXIT,93
|
||||||
|
.data
|
||||||
|
int1: .word 0xa2
|
||||||
|
int2: .word 0xb
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
adr x1, int1
|
||||||
|
ldr w0, [x1]
|
||||||
|
uxtw x1, w0 // int1 is in x1
|
||||||
|
adr x2, int2
|
||||||
|
ldr w3, [x2]
|
||||||
|
uxtw x2, w3 // int2 is in x2
|
||||||
|
mov x0, #0 // result is in x0
|
||||||
|
loop:
|
||||||
|
cbz x2, exit
|
||||||
|
tbz x2, #0, next
|
||||||
|
add x0, x2, #0
|
||||||
|
next:
|
||||||
|
lsl x2, x2, #1
|
||||||
|
lsr x1, x1, #1
|
||||||
|
b loop
|
||||||
|
|
||||||
|
exit: mov x0,#0
|
||||||
|
mov w8,#SYS_EXIT
|
||||||
|
svc #0x0
|
||||||
|
|
||||||
|
.end
|
3
arm/notes.txt
Normal file
3
arm/notes.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
cmp = subs sans sauvegarde résultat
|
||||||
|
0111 + 0001
|
||||||
|
tst =
|
24
arm/printHW.s
Normal file
24
arm/printHW.s
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
Lines enclosed here are comments
|
||||||
|
A small program: prints "Hello World!"
|
||||||
|
*/
|
||||||
|
// From // to the end of this line is a comment: next are directives to the assembler
|
||||||
|
.equ SYS_EXIT, 93
|
||||||
|
.equ SYS_WRITE, 64
|
||||||
|
.data // tells assembler to assemble the following in the data section
|
||||||
|
msg: .asciz "Hello World!\n" //msg retains the address of the string
|
||||||
|
.text // tells assembler to assemble the following
|
||||||
|
// in the text (code) section
|
||||||
|
.globl _start // _start is there where the program starts,
|
||||||
|
// .globl makes it visible to the linker
|
||||||
|
_start:
|
||||||
|
mov x0,#1 // value 1 is placed in register x0
|
||||||
|
adr x1,msg // the address retained by label msg is placed in register x1
|
||||||
|
mov x2,#13
|
||||||
|
mov w8, #SYS_WRITE // svc must find the syscall number in w8
|
||||||
|
// and the syscall arguments in x0,x1,x2
|
||||||
|
svc #0 // invoke syscall: displays on the screen
|
||||||
|
mov x0, #0 // in x0 put the value you want to exit with
|
||||||
|
mov w8,#SYS_EXIT
|
||||||
|
svc #0
|
||||||
|
.end
|
18
arm/shift-experiment.s
Normal file
18
arm/shift-experiment.s
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
.equ SYS_EXIT, 93
|
||||||
|
|
||||||
|
.data
|
||||||
|
.text
|
||||||
|
int: .quad 0x8000000000000000
|
||||||
|
.globl _start
|
||||||
|
|
||||||
|
_start :
|
||||||
|
mov x0, #1
|
||||||
|
lsl x1, x0, #3
|
||||||
|
lsr x2, x0, #1
|
||||||
|
adr x6, int
|
||||||
|
ldr x3,[x6]
|
||||||
|
lsr x4, x3, #3
|
||||||
|
asr x5, x3, #3
|
||||||
|
mov w8, #SYS_EXIT
|
||||||
|
svc #0
|
||||||
|
|
16
arm/w-vs-x-and-extension.s
Normal file
16
arm/w-vs-x-and-extension.s
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
.equ SYS_EXIT, 93
|
||||||
|
|
||||||
|
.data
|
||||||
|
int: .quad 0x11223344aabbccdd
|
||||||
|
int32: .word 0x887766ee
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
adr x1, int
|
||||||
|
ldr x0,[x1]
|
||||||
|
adr x1, int32
|
||||||
|
ldr w0,[x1] //Le registre x0 est vidé pour ne contenir seulement la valeur int32
|
||||||
|
sxtw x0, w0
|
||||||
|
mov x0, #0
|
||||||
|
mov w8, #SYS_EXIT
|
||||||
|
svc #0
|
Loading…
Reference in New Issue
Block a user