main.c 2.7 KB
Newer Older
1 2
#include <stdio.h>
#include <stdarg.h>
3
#include "turing.h"
4

5 6 7 8 9 10 11 12
LITE_OS_SEC_TEXT UINTPTR LOS_Align(UINTPTR addr, UINT32 boundary)
{
    if ((addr + boundary - 1) > addr) {
        return (addr + boundary - 1) & ~((UINTPTR)(boundary - 1));
    } else {
        return addr & ~((UINTPTR)(boundary - 1));
    }
}
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
void b(){
    UINT8 w[3]={0};
    PTE_T pte1BasePtr = 0x11100000;
    VADDR_T vaddr = 0x80738903;  
    PTE_T  l1Entry = pte1BasePtr + vaddr >> MMU_DESCRIPTOR_L1_SMALL_SHIFT;
    printf("pte1BasePtr ad: %x\n",&pte1BasePtr);
    printf("w[1] ad: %x\n",&w[1]);
    printf("vaddr: %x\n",(MMU_DESCRIPTOR_L1_SMALL_SIZE >> 12));
    printf("l1Entry: %x\n",l1Entry);
    printf("MMU_DESCRIPTOR_L1_SMALL_MASK:%x\n",MMU_DESCRIPTOR_L1_SMALL_MASK);
    printf("MMU_DESCRIPTOR_L1_SMALL_FRAME:%x\n",MMU_DESCRIPTOR_L1_SMALL_FRAME);
    printf("pa: %x\n",MMU_DESCRIPTOR_L1_SECTION_ADDR(l1Entry) + (vaddr & (MMU_DESCRIPTOR_L1_SMALL_SIZE - 1)));
}
void a(){
    printf("BITMAP_BITS_PER_WORD %d\n",BITMAP_BITS_PER_WORD);
    printf("BITMAP_NUM_WORDS %d\n",BITMAP_NUM_WORDS(1UL << 8));
}

void round1(){
    int a = 0xFF;
    //printf("a>> %d\n",a>>3);
    //printf("a/ %d\n",a/8);
    printf("ROUNDUP %d,%d,%d\n", ROUNDUP(7,4) ,ROUNDUP(8,4) ,ROUNDUP(9,4));
    printf("ROUNDDOWN %d,%d,%d\n", ROUNDDOWN(7,4),ROUNDDOWN(8,4),ROUNDDOWN(9,4));
    printf("ROUNDOFFSET %d,%d,%d\n", ROUNDOFFSET(7,4),ROUNDOFFSET(8,4),ROUNDOFFSET(9,4));
}
void arg_test(int i, ...)
{
    int j=0,k=0;
    va_list arg_ptr;
    va_start(arg_ptr, i);
    printf("&i = %p\n", &i);//打印参数i在堆栈中的地址
    printf("arg_ptr = %p\n", arg_ptr);//打印va_start之后arg_ptr地址
    printf("%d %d %d\n", i, j, k);
    j=va_arg(arg_ptr, int);
    printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
    printf("%d %d %d\n", i, j, k);
    printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
    k=va_arg(arg_ptr, int);
    printf("%d %d %d\n", i, j, k);
    printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
    /*这时arg_ptr应该比参数i的地址高sizeof(int)个字节,即指向下一个参数的地址,如果已经是最后一个参数,arg_ptr会为NULL*/
    va_end(arg_ptr);
    printf("arg_ptr = %p\n", arg_ptr);//打印va_arg后arg_ptr的地址
    printf("%d %d\n", i, j);
}
int main()
{
61 62 63 64
    int size = 4097;
    size = LOS_Align(size, PAGE_SIZE);//必须对齐
    printf("sizeof(int) %d\n",size);
    //round1();
65 66 67 68 69 70
    //arg_test(99, 4,8,9);
    //size = sizeof(LOS_DL_LIST) << OS_TSK_SORTLINK_LOGLEN;
    //printf("LOS_DL_LIST %d\n",sizeof(LOS_DL_LIST *));
    //printf("size %d\n",size);
    return 0;
}
71
// gcc -o main main.c