cmdline support
This commit is contained in:
@@ -781,6 +781,35 @@ END {
|
||||
LVA = e_entry
|
||||
}
|
||||
|
||||
# Setup command-line arguments on the stack
|
||||
n = 0
|
||||
if(length(CMD_OPTS) > 0) n = split(CMD_OPTS, args, "\001")
|
||||
else {
|
||||
n = 1
|
||||
args[1] = "amach"
|
||||
}
|
||||
|
||||
sp = getreg(2)
|
||||
for(i = n; i >= 1; i--) {
|
||||
len = length(args[i])
|
||||
sp = sp - (len + 1)
|
||||
for(j = 1; j <= len; j++)
|
||||
MEM[uint32(sp + j - 1)] = ord(substr(args[i], j, 1))
|
||||
MEM[uint32(sp + len)] = 0
|
||||
argv_ptr[i] = sp
|
||||
}
|
||||
|
||||
sp = sp - (sp % 16)
|
||||
sp = sp - 4 * (n + 3)
|
||||
sp = sp - (sp % 16)
|
||||
|
||||
write_word(sp, n)
|
||||
for(i = 1; i <= n; i++) write_word(sp + 4 * i, argv_ptr[i])
|
||||
write_word(sp + 4 * (n + 1), 0)
|
||||
write_word(sp + 4 * (n + 2), 0)
|
||||
|
||||
setreg(2, sp)
|
||||
|
||||
memsize = pc - LVA
|
||||
pc = LVA
|
||||
while(pc > -1) {
|
||||
|
||||
Reference in New Issue
Block a user