109 lines
4.5 KiB
Text
109 lines
4.5 KiB
Text
/* ARM assembly AARCH64 Raspberry PI 3B */
|
|
/* program createDirFic64.s */
|
|
|
|
/*******************************************/
|
|
/* Constantes file */
|
|
/*******************************************/
|
|
/* for this file see task include a file in language AArch64 assembly*/
|
|
.include "../includeConstantesARM64.inc"
|
|
|
|
.equ MKDIRAT, 0x22 // Linux Syscall create directory
|
|
.equ CHGDIR, 0x31 // Linux Syscall change directory
|
|
|
|
/*******************************************/
|
|
/* Initialized data */
|
|
/*******************************************/
|
|
.data
|
|
szMessCreateDirOk: .asciz "Create directory Ok.\n"
|
|
szMessErrCreateDir: .asciz "Unable create directory. \n"
|
|
szMessErrChangeDir: .asciz "Unable change directory. \n"
|
|
szMessCreateFileOk: .asciz "Create file Ok.\n"
|
|
szMessErrCreateFile: .asciz "Unable create file. \n"
|
|
szMessErrCloseFile: .asciz "Unable close file. \n"
|
|
|
|
szNameDir: .asciz "Dix1"
|
|
szNameFile: .asciz "file1.txt"
|
|
|
|
/*******************************************/
|
|
/* UnInitialized data */
|
|
/*******************************************/
|
|
.bss
|
|
/*******************************************/
|
|
/* code section */
|
|
/*******************************************/
|
|
.text
|
|
.global main
|
|
main: // entry of program
|
|
// create directory
|
|
mov x0,AT_FDCWD
|
|
ldr x1,qAdrszNameDir // directory name
|
|
mov x2,0775 // mode (in octal zero is important !!)
|
|
mov x8,MKDIRAT // code call system create directory
|
|
svc 0 // call systeme
|
|
cbnz x0,99f // error ?
|
|
|
|
// display message ok directory
|
|
ldr x0,qAdrszMessCreateDirOk
|
|
bl affichageMess
|
|
// change directory
|
|
ldr x0,qAdrszNameDir // directory name
|
|
mov x8, #CHGDIR // code call system change directory
|
|
svc #0 // call systeme
|
|
cbnz x0,98f // error ?
|
|
// create file
|
|
mov x0,AT_FDCWD // current directory
|
|
ldr x1,qAdrszNameFile // directory name
|
|
mov x2,O_CREAT|O_WRONLY // flags
|
|
mov x3,0644 // this zone is Octal number (0 before)
|
|
mov x8,OPEN // code call system open file
|
|
svc #0 // call systeme
|
|
cmp x0,#0 // error ?
|
|
ble 97f
|
|
mov x19,x0 // save File Descriptor
|
|
// display message ok file
|
|
ldr x0,qAdrszMessCreateFileOk
|
|
bl affichageMess
|
|
|
|
// close file
|
|
mov x0,x19 // Fd
|
|
mov x8,CLOSE // close file
|
|
svc 0
|
|
cbnz x0,96f // error ?
|
|
mov x0,0 // return code Ok
|
|
b 100f // end Ok
|
|
96: // display error message close file
|
|
ldr x0,qAdrszMessErrCloseFile
|
|
bl affichageMess
|
|
mov x0,1 // return code error
|
|
b 100f
|
|
97: // display error message create file
|
|
ldr x0,qAdrszMessErrCreateFile
|
|
bl affichageMess
|
|
mov x0,1 // return code error
|
|
b 100f
|
|
98: // display error message change directory
|
|
ldr x0,qAdrszMessErrChangeDir
|
|
bl affichageMess
|
|
mov x0,1 // return code error
|
|
b 100f
|
|
99: // display error message create directory
|
|
ldr x0,qAdrszMessErrCreateDir
|
|
bl affichageMess
|
|
mov x0,1 // return code error
|
|
b 100f
|
|
100: // standard end of the program
|
|
mov x8,EXIT // request to exit program
|
|
svc 0 // perform the system call
|
|
qAdrszMessCreateDirOk: .quad szMessCreateDirOk
|
|
qAdrszMessErrCreateDir: .quad szMessErrCreateDir
|
|
qAdrszMessErrChangeDir: .quad szMessErrChangeDir
|
|
qAdrszMessCreateFileOk: .quad szMessCreateFileOk
|
|
qAdrszNameFile: .quad szNameFile
|
|
qAdrszMessErrCreateFile: .quad szMessErrCreateFile
|
|
qAdrszMessErrCloseFile: .quad szMessErrCloseFile
|
|
qAdrszNameDir: .quad szNameDir
|
|
/********************************************************/
|
|
/* File Include fonctions */
|
|
/********************************************************/
|
|
/* for this file see task include a file in language AArch64 assembly */
|
|
.include "../includeARM64.inc"
|