atarionline.pl MADS i dyrektywa .LEN - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorcalypso2k
    • CommentTime26 Feb 2013
     
    hejka,
    pewnie coś nie doczytałem, albo nie jarze...

    dla takowego,przykładowego fragmentu kodu
    .STRUCT free_ptr_struct
    prev .WORD
    next .WORD
    .ENDS

    free_ptr_t free_ptr_struct

    .print .len(free_ptr_t)


    .LEN zwraca 0 (zero)
    chciałbym otrzymać 4 (bez alokacji pamięci), ponieważ dalej chciałbym zapisać

    TRALALALA        equ .LEN(free_ptr_t)  //mam 0, chciałbym 4


    wiem, żę .LEN zwraca dla: .PROC, .ARRAY, .LOCAL, .STRUCT - więc zadziała (zwróci 4)
    .print .len(free_ptr_struct)


    nie czepiam się :) chodzi mi o semantyke (tak to się nazywa?), da się jakoś dostać 4 dla free_ptr_t?
    • 2: CommentAuthortebe
    • CommentTime26 Feb 2013 zmieniony
     
    musisz odwołać się do konkretnie do struct

    .len (.sizeof) nie zwraca długości dla etykiet, a free_ptr_t to już zwykła etykieta pod którą alokowałeś dane o typie zdefiniowanym w struct

    możesz też alokować dane tak

    free_ptr_t dta free_ptr_struct[3]

    wtedy masz kolejne adresy do których odwołujesz się przez [n]

    .print free_ptr_t[0]
    .print free_ptr_t[1]
    .print free_ptr_t[2]
    .print free_ptr_t[3]
    • 3: CommentAuthorcalypso2k
    • CommentTime26 Feb 2013
     
    pytam, bo wiesz - stary pies, stare przyzwyczajenia... z c

    #include <cstdio>

    int main() {
    typedef struct free_ptr_struct {
    struct bhdr_struct *prev;
    struct bhdr_struct *next;
    } free_ptr_t;

    printf("fps:%lu\n", sizeof(free_ptr_struct));
    printf("fpt:%lu\n", sizeof(free_ptr_t));
    }

    wypluwa
    fps:16
    fpt:16


    dzięki za potwierdzenie :)
    • 4: CommentAuthortebe
    • CommentTime27 Feb 2013
     
    zajrzę jeszcze do kodu mads-a, informacja o rozmiarze pewnie jest przechowywana, tylko nie jest udostępniana podczas .LEN