2016-08-24 1 views
0

Gibt es eine Möglichkeit, die gleiche Reihe von Bytes viele Male in Apples Assembler zu wiederholen?Wiederhole Bytes in Apple-Assembly?

Beispiel Anwendungsfall: wenn ich eine iPhone-App mit einem Gigabyte NOP-Anweisungen in einer Funktion machen möchte.

+0

@ JoseManuelAbarcaRodríguez das ist nicht das, worum ich frage. –

+0

Dies würde beispielsweise dazu führen, zu testen, wie sich App-Größe auf verschiedene Leistungsmetriken auswirkt. –

+0

Meine Frage erklärt ganz genau, was ich erreichen möchte. Du hast einfach nicht darauf vertraut, dass ich gute Motive dafür habe. Ich habe dir eins von mehreren möglichen gegeben. –

Antwort

3

können Sie verwenden .fill

.fill 69, 4, 0xfeadface
Erzeugt 69 sehnt sich der Wert 0xfeadface

oder .space

ten_ones: .space 10, 1

wenn es nur um Bytes geht.

Ich konnte nicht das Äquivalent von NASM TIMES finden, die Sie sogar Anweisungen wiederholen lassen würde.

Sie können versuchen, das mit rekursiven Makros zu erreichen; Ich habe keinen Zugriff auf Apple Assembler, daher kann ich nur ein mögliches Makro skizzieren.
Hüten Sie sich vor Syntaxproblemen, Expressivität und Argumenten, wenn Sie mit (vermeintlich) eingeschränkten Sprachen arbeiten, wie sie für Makros verwendet werden.

.macro TIMES 
.if $0 > 0 
    $1 
    var $0-1 $1 
.endif 
.endmacro 

TIMES 100, mov 
+1

Das Gas-Handbuch hat [ein Beispiel für die Verwendung eines rekursiven Makros, um einen Block variabler Länge zu erzeugen, was immer Sie wollen] (https://sourceware.org/binutils/docs/as/Macro.html). Der Block könnte einfach Anweisungen statt '.long' oder' .byte' sein. Unter der Annahme, dass Apples Assembler die gleichen Makrosprachen/Direktiven wie GNU 'as' verwendet, sollte dies funktionieren. –

+0

Ausgezeichnet! Vielen Dank! –

+0

BTW, nicht in der Lage, Anweisungen zu tun ist in Ordnung. Ich kann einfach das Hex-Muster der Anweisung wiederholen. –