結果
| 問題 |
No.9000 Hello World! (テスト用)
|
| ユーザー |
alpha_virginis
|
| 提出日時 | 2016-03-31 15:18:05 |
| 言語 | Assembler (nasm 2.16.03) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 5,000 ms |
| コード長 | 2,457 bytes |
| コンパイル時間 | 466 ms |
| コンパイル使用メモリ | 5,376 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-12-25 08:26:01 |
| 合計ジャッジ時間 | 988 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 4 |
ソースコード
section .data
;; static
hellow: db "Hello World!"
hellow_len: equ $ - hellow
section .bss
common stdinbuf 1048576:1
common stdinbuf_size 1:8
common stdinbuf_seek 1:8
common stdoutbuf 1048576:1
common stdoutbuf_size 1:8
section .text
global _start
_start:
call readstdin
call setupstdout
mov rdi, hellow
mov rsi, hellow_len
call putStrLn
call writestdout
mov rax, 60
mov rdi, 0
syscall
ret
readstdin:
mov rax, 0
mov rdi, 0
mov rsi, stdinbuf
mov rdx, 1048576
syscall
mov [stdinbuf_size], rax
mov rax, 0
mov [stdinbuf_seek], rax
ret
setupstdout:
mov rax, 0
mov [stdoutbuf_size], rax
ret
writestdout:
mov rax, 1
mov rdi, 1
mov rsi, stdoutbuf
mov rdx, [stdoutbuf_size]
syscall
ret
;;; rdi : dest
;;; rsi : src
;;; rdx : size
strncpy:
cmp rdx, 0
jne strncpy_L1
ret
strncpy_L1:
mov al, [rsi]
mov [rdi], al
add rsi, 1
add rdi, 1
sub rdx, 1
jne strncpy_L1
ret
;;; dil char
putChar:
mov rax, stdoutbuf
add rax, [stdoutbuf_size]
mov [rax], dil
mov rax, [stdoutbuf_size]
add rax, 1
mov [stdoutbuf_size], rax
ret
;;; rdi str
;;; rsi size
putStr:
cmp rsi, 0
jne putStr_L1
ret
putStr_L1:
mov rax, stdoutbuf
add rax, [stdoutbuf_size]
mov rdx, [stdoutbuf_size]
add rdx, rsi
mov [stdoutbuf_size], rdx
putStr_L2:
mov dl, [rdi]
mov [rax], dl
add rax, 1
add rdi, 1
sub rsi, 1
jne putStr_L2
ret
;;; rdi str
;;; rsi size
putStrLn:
push rdi
push rsi
call putStr
pop rsi
pop rdi
mov dil, 10
call putChar
ret
alpha_virginis