2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

42Tokyo【プログラミング学校】

1 :デフォルトの名無しさん:2019/11/18(月) 22:29:04.29 ID:2edwNcfF.net
42Tokyoのスレです。


42 Tokyoとは

42 Tokyo(フォーティーツー)は、フランス発のエンジニア養成機関です。
「挑戦したいすべての人に質の高い教育を」を理念にシリコンバレーをはじめ、世界各国でエンジニア教育をおこなっています。
24時間利用可能な施設、学生同士で課題を克服するピアラーニング、学費完全無料など新しい仕組みで、社会で活躍するエンジニアを数多く輩出しています。


https://42tokyo.jp
より引用抜粋

現在応募受付中です。

288 :デフォルトの名無しさん:[ここ壊れてます] .net
東大の学生さん42Tokyoの課題のアセンブラの問題もやってるんだなあ。

https://github.com/YJI5212/42Tokyo/blob/main/libasm/ft_strdup.s
> _ft_strdup:
>     push rdi
>     call _ft_strlen
>     mov rdi, rax
>     call _malloc
>     jc .error
>     mov rdi, rax
>     pop rsi
>     call _ft_strcpy
>     ret
> .error:
>     mov rbx, rax
>     call ___error
>     mov [rax], rbx
>     ret

mallocが失敗したのをフラグで判定するのわけわからんw
つかmallocするサイズも間違えてるしw
ft_strcpy呼んでる時のスタックのアライメントや.errorに分岐
した際にrbx破壊してるの見るとx86-64のABI分かってないなw

289 :デフォルトの名無しさん:[ここ壊れてます] .net
https://github.com/unstoppa61e/libasm/blob/master/libasm/ft_strdup.s
> %define ARG1 rdi
> %define ARG2 rsi
> %define ARG3 rdx
> %define LEN rax
>
> default rel
>
> section .text
>   extern _ft_strlen
>   extern _ft_strcpy
>   extern _malloc
>   global _ft_strdup
>
> _ft_strdup:
>   push  ARG1      ; var = str;
>   call  _ft_strlen   ; LEN = ft_strlen(str);
>
>   lea   ARG1, [LEN + 1] ; ARG1 = LEN + 1;
>   call  _malloc     ; LEN = malloc(ARG1);
>
>   mov   ARG1, rax    ; ARG1 = retV (= mallocked str);
>   pop   ARG2      ; ARG2 = var;
>   call  _ft_strcpy   ; retV = ft_strcpy(ARG1, ARG2);
>
>   ret           ; return (retV);

もう一人の人のはmallocのエラーチェックなしかよw
ft_strlenが返した値に+1してるのはさっきの人よかマシだが。
スタックのアライメント間違えてるのは同様だしやっぱABI分かって
ないのね。
よくこんなコード公開するなあ。これでレビューしてんのかよ。ザルすぎだろ。

98 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200