: Subroutine threaded code is different from native code in that everything is a call; including to constructs like IF. Take this code in Forth;
   X IF ." True" THEN ... etc

 An STC potentially generates (numbers are there to discuss in text)

  (1)  CALL 
  (2)  CALL IF
  (3)  CALL 
  (4)  CALL ."
  (5)   
  (6)  CALL THEN
       ... etc

 (1) "tucks" the address of the label  on the return stack by popping the caller's return address, pushing address of  and returning. (2) IF pops and checks the top of the data stack; if it's zero, then jump to label, else return. And so on. (6) is in fact a no-op, but  it's sometimes generated so that the code can be decompiled easily by printing off the labels in the symbol table (called a dictionary in Forth) associated with the CALLed address. 

 There are very few Forths that use STC in this extreme form, and a blend between STC and NCC (native code compilation) is normally used. An ITC is the same code, but with addresses only and no CALL opcode; a small VM interpreter does the call/return management.