ARM64の勉強#1

(0)

(1)

#include <stdio.h>
#include <stdint.h>
int main()
{
    printf("%d\n", (int) sizeof (int32_t));
    return 0;}
}

(2)

#include <stdio.h>
#include <stdint.h>

uint32_t t[] = { 0xd2800000 | 123 << 5, 0xd65f03c0 }; // x0=123; ret;

int main()
{
    int (*fnc)() = (int (*)()) t;
    int i = fnc();
    printf("i=%d\n", i);
    return 0;
}

(3)

#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/mman.h>

int main()
{
    uint32_t *code;
    posix_memalign((void **) &code, sysconf(_SC_PAGESIZE), 8);
    mprotect((void *) code, 8, PROT_READ | PROT_WRITE | PROT_EXEC);
    code[0] = 0xd2800000 | 123 << 5; // x0=123;
    code[1] = 0xd65f03c0; // ret;
    int i = ((int (*)()) code)();
    printf("i=%d\n", i);
    return 0;
}

(4)

#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/mman.h>

int main()
{
    uint32_t *code;
    posix_memalign((void **) &code, sysconf(_SC_PAGESIZE), 8);
    mprotect((void *) code, 8, PROT_READ | PROT_WRITE | PROT_EXEC);
    code[0] = 
    code[0] = 0xd2800000 | 123 << 5; // x0=123;
    code[1] = 0xd65f03c0; // ret;
    int i = ((int (*)()) code)();
    printf("i=%d\n", i);
    return 0;
}

(9)

こめんと欄


コメントお名前NameLink

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS