a) the last syllable is stressed if it is a heavy syllable not preceded by another heavy syllable or a superheavy syllable not preceded by another superheavy syllable
b) the first syllable is stressed if it followed entirely by light syllables
c) elsewise stress is placed on the heaviest non-final syllable
A summary of what this looks like below:
More: show
I'd also remark that the vowels with a circumflex V̂ are the result of vowel coalescence from the weak consonants /w j ʡ~ʕ ʔ ħ h/<w y ċ c ḥ h> eliding intervocalically, word-finally, and word-initially (except /w j/ are kept word-initially). In coda position or as the second member of a consonant cluster, they just lengthen the preceding vowel (although /aj aw/ tend to become /e:~i: u:/).
Example words before the stress change and syncope of post/pre-tonic vowels:
Strong:
*kásan-ū "accepts (f.sg.)"
*kásan-um "accept (f.pl.)"
*kásan(a)n-ū "that ... accepts (f.sg.subj)
*ná-kasan-ū "will accept (fut.f.sg.)"
Initial-Weak:
*wáṣiḫ-ī "is faithful (m.sg.)"
*wáṣiḫ-im "is faithful (m.pl.)"
*wáṣiḫ(i)ḫ-ī "that ... is faithful (m.sg.subj)
*ná-waṣiḫ-ī "will be faithful (fut.m.sg.)"
Medial-Weak:
*ṣácab-ū "kills"
*ṣácab-um "kill"
*ṣácab(a)b-ū "that ... kills"
*ná-ṣacab-ū "will kill"
Final-Weak:
*málay-ū "takes"
*málay-um "take"
*málay(a)y-ū "that ... takes"
*ná-malay-ū "will take"
*ḫakar-a "dog (f.sg.)" > *ḫakar-∅ (in construct state)
*ḫakar-an "dogs (f.pl.)" > *ḫakar-ā (in construct state)
*máziy-a "sea (f.sg.)" > *máziy-∅ (in construct state)
*máziy-an "seas (f.pl.)" > *máziy-ā (in construct state)
*nízuḥ-e "excuse, buttocks (m.sg.)" > *nízuḥ-∅ (in construct state)
*nízuḥ-en "excuses, buttocks (m.pl.)" > *nízuḥ-ē (in construct state)