{"action":"created","issue":{"url":"https://api.github.com/repos/copy/v86/issues/237","repository_url":"https://api.github.com/repos/copy/v86","labels_url":"https://api.github.com/repos/copy/v86/issues/237/labels{/name}","comments_url":"https://api.github.com/repos/copy/v86/issues/237/comments","events_url":"https://api.github.com/repos/copy/v86/issues/237/events","html_url":"https://github.com/copy/v86/pull/237","id":360638646,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1ODIyNzQx","number":237,"title":"Implementation of pmuludq (SSE2 instruction)","user":{"login":"davidbullado","id":10708817,"node_id":"MDQ6VXNlcjEwNzA4ODE3","avatar_url":"https://avatars1.githubusercontent.com/u/10708817?v=4","gravatar_id":"","url":"https://api.github.com/users/davidbullado","html_url":"https://github.com/davidbullado","followers_url":"https://api.github.com/users/davidbullado/followers","following_url":"https://api.github.com/users/davidbullado/following{/other_user}","gists_url":"https://api.github.com/users/davidbullado/gists{/gist_id}","starred_url":"https://api.github.com/users/davidbullado/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidbullado/subscriptions","organizations_url":"https://api.github.com/users/davidbullado/orgs","repos_url":"https://api.github.com/users/davidbullado/repos","events_url":"https://api.github.com/users/davidbullado/events{/privacy}","received_events_url":"https://api.github.com/users/davidbullado/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2018-09-16T13:16:35Z","updated_at":"2018-09-18T06:15:15Z","closed_at":"2018-09-17T18:57:07Z","author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/copy/v86/pulls/237","html_url":"https://github.com/copy/v86/pull/237","diff_url":"https://github.com/copy/v86/pull/237.diff","patch_url":"https://github.com/copy/v86/pull/237.patch"},"body":"- Implement pmuludq\r\n- Nasm automated  tests : Add eight 128-bit SSE registers from xmm0 to xmm8\r\n\r\n(My previous PR cannot be reopened, this is why I opened a new one. Sorry for the inconvenience)"},"comment":{"url":"https://api.github.com/repos/copy/v86/issues/comments/422268213","html_url":"https://github.com/copy/v86/pull/237#issuecomment-422268213","issue_url":"https://api.github.com/repos/copy/v86/issues/237","id":422268213,"node_id":"MDEyOklzc3VlQ29tbWVudDQyMjI2ODIxMw==","user":{"login":"AmaanC","id":1172631,"node_id":"MDQ6VXNlcjExNzI2MzE=","avatar_url":"https://avatars1.githubusercontent.com/u/1172631?v=4","gravatar_id":"","url":"https://api.github.com/users/AmaanC","html_url":"https://github.com/AmaanC","followers_url":"https://api.github.com/users/AmaanC/followers","following_url":"https://api.github.com/users/AmaanC/following{/other_user}","gists_url":"https://api.github.com/users/AmaanC/gists{/gist_id}","starred_url":"https://api.github.com/users/AmaanC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmaanC/subscriptions","organizations_url":"https://api.github.com/users/AmaanC/orgs","repos_url":"https://api.github.com/users/AmaanC/repos","events_url":"https://api.github.com/users/AmaanC/events{/privacy}","received_events_url":"https://api.github.com/users/AmaanC/received_events","type":"User","site_admin":false},"created_at":"2018-09-18T06:15:15Z","updated_at":"2018-09-18T06:15:15Z","author_association":"CONTRIBUTOR","body":"> How can I take the unimplemented SSE instruction (like `t[0x10] = cpu => { cpu.unimplemented_sse(); };`) and find whichever instruction it is? I've thought about trying to learn about everything and implement some, but I don't know how to. @davidbullado what sources did you use?\r\n\r\nAn easy way to find which instructions are unimplemented SSE instructions in the wild (for eg. when running Windows XP on v86) is to run v86 in debug mode (i.e. `debug.html`) and to leave the developer tools open - the [`unimplemented_sse`](https://github.com/copy/v86/blob/aafaa7c878573c9a99dcca09467185845af4b12f/src/cpu.js#L3268-L3273) function calls [`dbg_assert(false)`, which will eventually call `debugger`](https://github.com/copy/v86/blob/aafaa7c878573c9a99dcca09467185845af4b12f/src/log.js#L105-L129), which will pause the code in your developer tools - in the call stack there, just click on the `t.(anonymous function).cpu` (or whatever it is in your tools) and follow the code:\r\n\r\n![I just added a dummy `unimplemented_sse` call to demonstrate.](https://user-images.githubusercontent.com/1172631/45667476-f6eaa100-bb36-11e8-9808-f2abae9082b7.png)\r\n\r\nOf course, you could also just update the debugging code to actually dump the opcode too, which might be a nice PR to have and a fun learning exercise :)\r\n(Hint: Figure out how `instruction_pointer` changes as instructions call `unimplemented_sse` - does it vary? How does `read_imm8` work? Remember if you do add the logging, keep it to DEBUG mode only!)\r\n\r\nI'm occasionally on the v86 Gitter too, if you have any questions I can help with (just ping me so I see it)."}}
{"actor":{"display_login":"AmaanC"}}