Program 4: Memory Copy
Reserving Space, Pt. 2 #
Sometimes (read most of the time) you probably won’t know the length of the output or exactly how much space you will need for the program. As opposed to writing a string in memory, you can use the fill directive to reserve space. The syntax is # of data parts to reserve, the size of the space to reserve, and the value to store in that space. If the default value is not provided, it will default to 0 (integer). If you provide the size of each data repeat, it must be 1, 2, or 4 referring number of bytes. If the size is omitted, it is assumed to be 1 (byte).1 There are other ways to reserve memory through the operating system, but they are outside the scope of this course.
label: .fill 128 @ reserves 128 bytes label2: .fill 128, 2, 1 @ reserves 128 2-byte blocks (256 bytes) @ with each 2-byte value equal to 1
It’s super important to note that with the ARM compiler, the syntax is slightly different. The order of the values is # of blocks, value, size. When in doubt, you can also just use
.spacein either syntax and provide the number of bytes followed by the fill value you want. (e.g.,
.space 128, 1for 128 bytes set to the value 1) ↩︎