I am building an executable that will be an assembly .o file. I have tried numerous tests, but I am unable to determine what registers the base
FROM scratch image is using for command line arguments
Here is the full Dockerfile.
#Builder image, usually contains sdk's/build tools that won't be needed during runtime FROM christopherclark/nasm-builder as builder #Copy contents from current directory, dockerfile, and main.asm COPY ./ ./ #Does your building and linking of the file. RUN nasm -f elf64 main.asm RUN ld -s -o main main.o #a single executable called main now exists #the last image is the image that will be used when you run your container, usually you want this to be as small as possible FROM scratch #Copy everything you need, notice the syntax, you can specificy from which stage you want to copy. COPY --from=builder /main /main #EXPOSE 60833 ENTRYPOINT ["/main"]
I have tried numerous ways to pass in arguments, directly in the entry point, with
I have tried with cmd when running my docker image
docker run -ti main-asm heyo!
I have tried numerous registers and echoing them to the console and to no avail. The only thing that worked was actually prompting the user with
stdin first. I need to read the arguments at the start of the program. Please advise. Here is the working example that prompts the user.
section .data ;Data segment userMsg: db 'Please enter a number: ' ;Ask the user to enter a number lenUserMsg: equ $-userMsg ;The length of the message dispMsg: db 'You have entered: ' lenDispMsg: equ $-dispMsg buffer: times 20 db 0 bufferLen: resb 20 section .bss ;Uninitialized data num resb 5 section .text ;Code Segment global _start _start: ;User prompt mov eax, 4 mov ebx, 1 mov ecx, userMsg mov edx, lenUserMsg int 80h ; ;Read and store the user input mov eax, 3 mov ebx, 2 mov ecx, num mov edx, 5 ;5 bytes (numeric, 1 for sign) of that information int 80h ;Output the message 'The entered number is: ' mov eax, 4 mov ebx, 1 mov ecx, dispMsg mov edx, lenDispMsg int 80h ;Output the number entered mov eax, 4 mov ebx, 1 mov ecx, num mov edx, 5 int 80h ; Exit code mov eax, 1 mov ebx, 0 int 80h