User Tools

Site Tools


base:multiplication_with_a_constant

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
base:multiplication_with_a_constant [2020-03-30 22:27] twwbase:multiplication_with_a_constant [2020-04-10 17:25] tww
Line 1: Line 1:
 ====== Multiplication with a constant ====== ====== Multiplication with a constant ======
 +
 Multiplication by a specific constant can be a lot simpler and faster than a general-purpose routine to multiply two given numbers together. Multiplication by a specific constant can be a lot simpler and faster than a general-purpose routine to multiply two given numbers together.
  
Line 17: Line 18:
 ---- ----
  
-EDIT: The above is based on 8*A + 2*A. This routine would not allow any higher number than A = 25 as it would overflow (8 * 26) + (2 * 26) = 208 + 52 = 262 (However 25 fits perfectly f.ex. when you'd want to calculate a character line based on Y).+By TWW: 
 + 
 +Optimization of the above posted by unknown: The above is based on 8*A + 2*A. This routine would not allow any higher number than A = 25 as it would overflow (8 * 26) + (2 * 26) = 208 + 52 = 262 (However 25 fits perfectly f.ex. when you'd want to calculate a character line based on Y).
  
 With this in mind, you can do 2*A + 8*A which saves you the asl $2. Also as long as A cannot be higher than 25, the upper 4 bits (high nybble) will always be #%0000. This means that the asl instructions will never set carry and the clc can be dropped. With this in mind, you can do 2*A + 8*A which saves you the asl $2. Also as long as A cannot be higher than 25, the upper 4 bits (high nybble) will always be #%0000. This means that the asl instructions will never set carry and the clc can be dropped.
base/multiplication_with_a_constant.txt · Last modified: 2021-02-10 01:24 by strobe