Wenn Ihr Prozessor keine Hardwareunterstützung für einen Parameter- / lokalen Stapel hat, der Compiler jedoch trotzdem versucht, einen Laufzeitparameterstapel zu implementieren, und wenn Ihr Code nicht erneut eingegeben werden muss, können Sie möglicherweise Code speichern Raum durch statische Zuordnung von Auto-Variablen. In einigen Fällen muss dies manuell erfolgen. In anderen Fällen können Compiler-Direktiven dies tun. Eine effiziente manuelle Zuordnung erfordert die gemeinsame Nutzung von Variablen zwischen den Routinen. Diese Freigabe muss sorgfältig erfolgen, um sicherzustellen, dass keine Routine eine Variable verwendet, die von einer anderen Routine als "im Bereich" eingestuft wird. In einigen Fällen können die Vorteile der Codegröße jedoch erheblich sein.
Einige Prozessoren haben Aufrufkonventionen, mit denen einige Parameterübergabestile effizienter als andere sind. Wenn beispielsweise bei den PIC18-Controllern eine Routine einen einzelnen Ein-Byte-Parameter akzeptiert, kann dieser in einem Register übergeben werden. wenn es mehr braucht, alles Parameter im RAM übergeben werden. Wenn eine Routine zwei Ein-Byte-Parameter verwenden würde, ist es möglicherweise am effizientesten, einen in einer globalen Variablen und dann den anderen als Parameter zu übergeben. Bei weit verbreiteten Routinen können sich die Einsparungen summieren. Sie können besonders wichtig sein, wenn der über global übergebene Parameter ein Einzelbit-Flag ist oder normalerweise den Wert 0 oder 255 hat (da spezielle Anweisungen zum Speichern einer 0 oder 255 im RAM vorhanden sind).
Auf dem ARM kann das Zusammenfügen von häufig verwendeten globalen Variablen zu einer Struktur die Codegröße erheblich verringern und die Leistung verbessern. Wenn A, B, C, D und E separate globale Variablen sind, muss der Code, der sie alle verwendet, die Adresse jeder Variablen in ein Register laden. Wenn nicht genügend Register vorhanden sind, müssen diese Adressen möglicherweise mehrmals neu geladen werden. Wenn sie hingegen Teil derselben globalen Struktur MyStuff sind, kann Code, der MyStuff.A, MyStuff.B usw. verwendet, die Adresse von MyStuff einfach einmal laden. Großer Gewinn.