[ aleksazr @ 03.04.2012. 21:39 ] @
Imam dve varijable tipa WORD (unsigned, 16 bita), a rezultat treba da bude DWORD (unsigned, 32 bita): nešto ovako: DWORD = WORD1 - WORD2. Želim da procesor oduzme unsigned WORD - unsigned WORD i dobije unsigned WORD. Zatim da ga zero-extendira na unsigned DWORD. (za one koji znaju X86, to je SUB AX,CX i MOVZX EAX,AX) Napisao sam rutinu DWORD sub (WORD word1, WORD word2) prvo sam napisao ovako: return (DWORD) (word1 - word2); jer sam očekivao da će kompajler oduzeti u16 - u16 i dobiti u16, pa ga ja castujem u u32. ali to nije radilo, pa sam promenuo u sledeće: return (WORD) (word1 - word2); ovo radi, ali nemam pojma da li treba tako, ili možda treba ovako return (DWORD) ((WORD) word1 - (WORD)word2); ili ko zna koja varijacija...? Da završim sa... Jezik C sam počeo da koristim tako što sam prosto seo i pisao program :) Baš tako. Pa mi fale neke osnove iz C jezika. Pre toga sam godinama radio u asembleru, pa mi je sam CPU blizak. 99.9% vremena mi ide bez problema, ali onda naletim na ovako nešto. |