Don't bother clearing %eax in bcopy(), it doesn't return anything so why clear a return value that never gets used? Don't bother clearing direction flag. Any code that doesn't set/clear it explicitly before a string instruction deserves to loose.