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 18:02
       
      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 21:02 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 21:02
       
      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 02:02
       
      zajrzę jeszcze do kodu mads-a, informacja o rozmiarze pewnie jest przechowywana, tylko nie jest udostępniana podczas .LEN