changed push/pop macros to take register argument, saves insructions