Use macros for register push/pop to prevent myself from making push/pop bugs